-hardware keyword(token) type() : unsigned, signed, length() : int <3>, [3:0] size() : [10] unsigned 4 RAM[4][4]; 4*4 4 bits RAM -logic/arithmetic &,/,^,+,-... -interface definition -module keyword RAM,ROM,BUS,... -method/processor pra : parallel seq : sequence par { { a = b; c = d; link ! x; } link ? y; } /* cycle Branch_1 Branch_2 1 a=b; delay 2 c=d; delay 3 channel_out channel_in */ -special keywords <- Take LSBs \\ Drop LSBs @ Concatenation x = 0xC7; y = x <- 4; // y = 0X7 z = x \\ 4; // z = 0xC x = y @ z; // x = 0x7C -standard library static extern volatile extern "C" int printf(const char *format, ...); -try except(reset) try ... reset try { a = 1; } reset(_condition) - RAM Bank/Bolck Check x = y>z ? RamA[1] : RamA[2]; // fail x = RamA[y>z ? 1 : 2]; // pass -Functions and macros: functions : not recursive macros : recursive macro expr multiply(x,y) = select(width(x) == 0, 0 multiply(x\\1,y<<1) + (x[0] == 1 ? y : 0)); a = multiply(b,c); a = ((b\\3)[0] == 1 ? c<<3 : 0) + ((b\\2)[0] == 1 ? c<<2 : 0) + ((b\\1)[0] == 1 ? c<<1 : 0) + (b[0] == 1 ? c : 0); a = ((b&8) == 8 ? c*8 : 0) + ((b&4) == 4 ? c*4 : 0) + ((b&2) == 2 ? c*2 : 0) + ((b&1) == 1 ? c : 0); delay // clock cycle -Platform type set family = XilinxVirtex; macro expr DoThis() = select (__isfamily(XilinxVirtex) : DoThing1() : select (__isfamily(AlteraApex20K) : DoThing2() : select (__isfamily(MadeUpDevice) : DoThing3() : DoThing4()) ) ); -Clock timing ram unsigned 8 ExtRAM[16384] with { offchip = 1, westart = 2, welength = 1, data = {"P1", "P2"}, addr = {"P9", "P10"}, we = {"P23"}, oe = {"P24"}, cs = {"P25"} }; -diff Clock interface FIFO/PORT/BUSRef:http://babbage.cs.qc.edu/courses/cs345/Manuals/HandelC.pdf
2011年9月19日 星期一
Handle-C
Handle-C 一種高階的HardWare語法, 有點像是把Hardware的Driver寫成API 的語法,讓使用者能透過這些API,直接控制硬體的行為模式.不過缺點就是Platform被綁死,而系統的最佳化取決於架構的型式.
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言