-
Notifications
You must be signed in to change notification settings - Fork 9
/
soc_arbiter.lua
26 lines (23 loc) · 984 Bytes
/
soc_arbiter.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
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"
types.export()
local Zynq = require "zynq"
local regs = SOC.axiRegs({},SDF{1,1024}):instantiate("regs")
local noc = Zynq.SimpleNOC(nil,nil,{{regs.read,regs.write}}):instantiate("ZynqNOC")
noc.extern=true
local OffsetModule = G.Module{ "OffsetModule", R.HandshakeTrigger,
function(i)
local readStream = G.AXIReadBurst{"frame_128.raw",{128,64},u(8),8,noc.read}(i)
local rb = G.FanOut{2}(readStream)
local rb0 = G.HS{G.Crop{{0,96,0,0}}}(rb[0])
local rb1 = G.HS{G.Crop{{96,0,0,0}}}(rb[1])
local arb = G.Arbitrate(R.concatArray2d("cca2",{G.StripFramed(rb0),G.StripFramed(rb1)},2))
return G.AXIWriteBurstSeq{"out/soc_arbiter",{64,64},8,noc.write}(arb)
end}
harness({regs.start, OffsetModule, regs.done},nil,{regs})