-
Notifications
You must be signed in to change notification settings - Fork 9
/
soc_simple_uniform.lua
32 lines (28 loc) · 1.22 KB
/
soc_simple_uniform.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
local R = require "rigel"
local SOC = require "soc"
local C = require "examplescommon"
local harness = require "harnessSOC"
local G = require "generators"
local RS = require "rigelSimple"
local types = require "types"
local SDF = require "sdf"
local Zynq = require "zynq"
types.export()
noc = Zynq.SimpleNOC():instantiate("ZynqNOC")
noc.extern=true
Regs = SOC.axiRegs({readAddress={u(32),0x30008000},writeAddress={u(32),0x30008000+(128*64)}},SDF{1,128*64},noc.readSource,noc.readSink,noc.writeSource,noc.writeSink)
regs = Regs:instantiate("regs")
OffsetModule = G.Module{ "OffsetModule", R.HandshakeTrigger,
function(i)
local readStream = SOC.axiBurstReadN("frame_128.raw",128*64,0,regs.readAddress,noc.read)(i)
readStream = G.HS{C.bitcast(b(64),ar(u(8),8))}(readStream)
local offset = G.HS{G.Map{G.Add{200}}}(readStream)
offset = G.HS{C.bitcast(ar(u(8),8),b(64))}(offset)
return SOC.axiBurstWriteN("out/soc_simple_uniform",128*64,0,regs.writeAddress,noc.write)(offset)
end}
-- tell the system how much memory we want
SOC.currentAddr = 0x3000c000
print(OffsetModule)
OffsetModule.globalMetadata["MAXI0_write_W"]=128
OffsetModule.globalMetadata["MAXI0_write_H"]=64
harness({regs.start, OffsetModule, regs.done},nil,{regs})