在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4173|回复: 12

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

[复制链接]
发表于 2012-7-29 13:37:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
一个基本的寄存器模型,用如下两种方式描述:
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
发表于 2012-7-29 21:57:15 | 显示全部楼层
第一种方式没有必要把d放进去,时序逻辑只要有clk和异步的reset即可;至于第二种,没研究过。一般也不这么用。
发表于 2012-7-30 10:27:40 | 显示全部楼层
LZ 的第二种方法太牛XX了,膜拜了。。。。。。
发表于 2012-7-30 11:02:13 | 显示全部楼层
楼主不要想当然。
这两周方式都不对。
用下面的模板吧。
process(clk,rst) -- 没有d,只有clk和reset
begin
if rst = '1' then
.....
elsif clk'event and clk='1' then
.....
end if;
end process;
 楼主| 发表于 2012-7-30 11:27:25 | 显示全部楼层
回复 4# jackertja


    为什么不能把d放进敏感变量?求版主解释
 楼主| 发表于 2012-7-30 11:28:18 | 显示全部楼层
回复 2# gaurson


    求解释
发表于 2012-7-30 12:28:37 | 显示全部楼层
回复 2# gaurson


    求解释!
发表于 2012-7-30 13:37:37 | 显示全部楼层
回复 7# lyc3981714641

q <= d

赋值操作是在时钟上升沿进行的,若d在其他时刻变化,q的值并不会发生改变,所以敏感列表中只需加入rst和clk。
发表于 2012-7-30 22:35:40 | 显示全部楼层
没有解释,只因为是时序逻辑,一切变化依赖于时钟而已。
发表于 2012-8-1 15:15:45 | 显示全部楼层
本帖最后由 jackertja 于 2012-8-1 15:17 编辑

回复 5# arccosx


    数字电路、同步电路、触发器结构。
敏感变量表里面是触发整个process动作的条件,一般FPGA里面是D触发器,只能由CLK/RESET触发。

要把RTL和数字电路联系起来。
如果没学过数字电路,去学。
如果没学好,去复习。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-17 19:28 , Processed in 0.034585 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表