微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于寄存器,这两种VHDL表达是否对综合和仿真有影响?

关于寄存器,这两种VHDL表达是否对综合和仿真有影响?

时间:10-02 整理:3721RD 点击:
一个基本的寄存器模型,用如下两种方式描述:
1.进程
process(clk,rst,d)
.....
if rst = '1' then
    q <= '0';
elsif rising_edge(clk) then
    q <= d;
......
2.类似组合逻辑的方式
q <= '0' when rst = '1' else
         d when rising_edge(clk);
用第2种方式描述的时候,nlint检查会报combinational loop

第一种方式没有必要把d放进去,时序逻辑只要有clk和异步的reset即可;至于第二种,没研究过。一般也不这么用。

LZ 的第二种方法太牛XX了,膜拜了。

小编不要想当然。
这两周方式都不对。
用下面的模板吧。
process(clk,rst) -- 没有d,只有clk和reset
begin
if rst = '1' then
.....
elsif clk'event and clk='1' then
.....
end if;
end process;



    为什么不能把d放进敏感变量?求小编解释



    求解释



    求解释!


q <= d
赋值操作是在时钟上升沿进行的,若d在其他时刻变化,q的值并不会发生改变,所以敏感列表中只需加入rst和clk。

没有解释,只因为是时序逻辑,一切变化依赖于时钟而已。



    数字电路、同步电路、触发器结构。
敏感变量表里面是触发整个process动作的条件,一般FPGA里面是D触发器,只能由CLK/RESET触发。
要把RTL和数字电路联系起来。
如果没学过数字电路,去学。
如果没学好,去复习。


谢谢指教,不过这些基本的我还是知道,毕竟做数电还是有几年了



    那对你而言,写RTL只要入门,就是一马平川。



    OK,那好吧

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top