verilog的always块里,既有电平又有边沿触发呢?

2019-03-25 09:59发布

怎么在verilog的always块里,既有电平又有边沿触发呢? 比如always@(a or b or c)我让a为边沿触发怎么实现 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
eeleader
1楼-- · 2019-03-26 05:45

在VHDL中这样写法,我认为有些不妥

begin
sel<=b&c;
process(a,b,c)
begin
if (sel="10") then
if a'event and a='1' then
cnt<=cnt+'1'
end if;
clk_out<=cnt[2];
end process;

主要是,if ----end if (sel="10")结构包括边缘触发(这个是实时钟信号)

常见写法1:

  if(变量=X) THEN

    -----

  ELSIF  clk'event and clk='1' then

----

end if;

这种写法更符合电路实际结构。

常见写法2:

if clk'event and clk='1' then

   if (sel="10") then

     ------

   end if;

 

end if;

 

目前从代码写法上看,VERILOG并没错误,

但我想是不是这个问题,A信号的边缘变化  慢于  B,C信号的变化,结果导致B,C信号采样丢失!

spontaou
2楼-- · 2019-03-26 06:20
 精彩回答 2  元偷偷看……
tx_xy
3楼-- · 2019-03-26 08:04
列个真值表  把输入输出的关系理清楚 这个问题迎刃而解。
eeleader
4楼-- · 2019-03-26 10:12

这个问题有这么复杂吗?还要真值表!

eeleader
5楼-- · 2019-03-26 15:50
9楼得意见不敢苟同!感觉不是你说的问题。看VERILOG 与VHDL代码都是这样编写的, 问题不应该出现在你说的这个问题点上。
tx_xy
6楼-- · 2019-03-26 20:41
原帖由 eeleader 于 2011-9-22 21:27 发表 这个问题有这么复杂吗?还要真值表!


晕的 复杂的问题 写个真值表  会累死人的 只有简单的题 写写真值表 、

现在的这个问题 楼主是不清楚两种语言的差异  他认为应该实现同样的功能 但结果却不一致

所以我才建议 列个真值表 这样自己可以清楚的知道哪种写法OK 。

一周热门 更多>