问一个VHDL的很笨的问题,求解惑

[复制链接]
2072|4
 楼主| 醉小清风 发表于 2012-12-6 23:09 | 显示全部楼层 |阅读模式
process (clk,en)
begin
if  en='1' then  
   if (clk'event and clk='0') then
      dout<=A;
   else
      dout<=B;
   end if;
end if;
end process;
提示错误:because it does not hold its value outside the clock edge
 楼主| 醉小清风 发表于 2012-12-6 23:15 | 显示全部楼层
这个功能不是下降沿的时候是A    上升沿是B么?
梅花望青竹 发表于 2012-12-6 23:27 | 显示全部楼层
if(clk
   if (en

这样比较好
GoldSunMonkey 发表于 2012-12-6 23:34 | 显示全部楼层
梅花望青竹 发表于 2012-12-6 23:27
if(clk
   if (en

正解
ococ 发表于 2012-12-7 08:54 | 显示全部楼层
醉小清风 发表于 2012-12-6 23:15
这个功能不是下降沿的时候是A    上升沿是B么?

这个功能不是你说的下降沿时候为A,上升沿为 B.
按照你写的代码,下降沿发生的那段很小的时间内dout为A,其余时间都为B。
如果要实现下降沿为A,上升沿为B 的话,
else
  dout<=b;
可以改为
elsif (clk'event and clk='1')  then
dout<=b;

不过FPGA设计一般不推荐使用逻辑代码实现双沿处理。
         
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

70

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部