集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1542|回复: 3

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

[复制链接]
polozpt 发表于 2011-3-31 23:06:20 | 显示全部楼层 |阅读模式
module tr(ina,clk,outb);
input ina,clk;
output outb;
reg outb;
reg [31:0] count;//clk
reg [31:0] 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 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-22 18:33 , Processed in 0.153066 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表