polozpt 发表于 2011-3-31 23:06:20

综合时出现了锁存器!!!!

module tr(ina,clk,outb);
input ina,clk;
output outb;
reg outb;
reg count;//clk
reg count1;//ina
reg q1;
always@(clk)begin
count<=count+1;
if(ina==1)
   begin
    count1<=count1+1;
    q1<=ina;
   end
   else
   begin
   outb<=clk;
   end
    if((count==count1)&&(count1>11))
    begin
    outb<=q1;
    end
    else
    begin
    outb<=clk;
    end
   end
endmodule

哦十全 发表于 2011-4-1 11:52:36

一般情况下,在组合逻辑电路中要避免锁存器的产生。而你的程序中的always块是一个时钟沿触发的,属于时序逻辑电路,所有的reg型,都寄存在一个D触发器中。按理说综合时时不会报错的。建议你在always中只使用一个if语句。要是有多种判断条件你可以使用if……else if……else。

polozpt 发表于 2011-4-1 18:58:18

回复 2# 哦十全


    我试试看吧

至芯汪老师 发表于 2011-4-1 23:15:04

HDL虽然也是代码,但是硬件毕竟不同,刚开始学习就不要只求功能,这对硬件学习者来说,是一种必定后悔的做法。

从开始就要了解自己写的代码对应什么电路,慢但是效果明显。
页: [1]
查看完整版本: 综合时出现了锁存器!!!!