@ydleenudt
2015-04-17T00:10:55.000000Z
字数 795
阅读 1238
数字系统设计
使用assign #num (ab, bb, cb) = ~(a, b, c);
注意:相关联的输入之间会相互影响
行为级(behavioral) -> 数据流级(dataflow) -> 门级(gate-level)
自动从数据流转换为行为级描述称为综合
触发器和锁存器都使用非阻塞赋值,latch在高电平传值,trigger在clk上升沿传值。
latch在使用中要尽量避免
遗漏了default或是else,可能产生非预期的使用旧值,产生latch。
eg:
always@(a or b or c or sel)begincase(sel)beginout = 1'bx;2'b00: out=a;2'b01: out=b;2'b10: out=c;endcase//这里缺少defalutend
Latch在FPGA中往往会占据很多资源。
eg:
always@(posedge clk)beginq1 <= in;q2 <= q1;q3 <= q2;end//需要3个clk来赋值VSalways@(posedge clk)beginq1 = in;q2 = q1;q3 = q2;end
计算和赋值同时进行
<== 避免使用优先级电路,如果每个分支的条件是互斥的,将得到更简单的电路。
eg:
if(i==b'0000)//实际上增加了限定条件,使得输入互斥VSif(i0==b'0)