@ydleenudt
2015-04-17T00:10:55.000000Z
字数 795
阅读 1179
数字系统设计
使用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)
begin
case(sel)
begin
out = 1'bx;
2'b00: out=a;
2'b01: out=b;
2'b10: out=c;
endcase
//这里缺少defalut
end
Latch在FPGA中往往会占据很多资源。
eg:
always@(posedge clk)
begin
q1 <= in;
q2 <= q1;
q3 <= q2;
end
//需要3个clk来赋值
VS
always@(posedge clk)
begin
q1 = in;
q2 = q1;
q3 = q2;
end
计算和赋值同时进行
<=
=
避免使用优先级电路,如果每个分支的条件是互斥的,将得到更简单的电路。
eg:
if(i==b'0000)
//实际上增加了限定条件,使得输入互斥
VS
if(i0==b'0)