关于verilog中always块里阻塞赋值的问题

2019-07-16 01:14发布

本帖最后由 laihuadewuyu 于 2013-10-12 12:22 编辑

在用verilog hdl 编写代码的时候,为了得到一个上升沿突变信号,我这样处理的
always @ (posedge clk)
begin
sig_out=1‘b0;
sig_out=1’b1;
end
这样写有效果吗????
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
unpopfeng
1楼-- · 2019-07-16 04:37
明显没效果。另外符号有些写错。
要得到上升沿突变信号,你的思考方式可以在testbench上写,用#1ns之类的。
是要检测上升沿?
laihuadewuyu
2楼-- · 2019-07-16 09:29
不是为了仿真,是为了触发外围的一个芯片,需要一个由低到高的突变信号,我那样写达不到效果吗
童话诗人
3楼-- · 2019-07-16 13:00
实在要这样的话,个人意见加个复位信号,用个计数器计数,这样所需脉冲的宽度、触发时间都可控,
简单的例如:
always @(posedge clk or negedge rst)
begin
  if(!rst)
    cnt<=2'd0;
  else if(cnt==2'd2)
      cnt<=2'd2;
  else
    cnt<=cnt+1'b1;
end
后面再写个case语句,cnt等于0,d_out为0;cnt等于1,d_out为1;cnt等于2,d_out为2。
童话诗人
4楼-- · 2019-07-16 13:53
上面的后面写错了,是cnt等于2,d_out为0;
happylizhi
5楼-- · 2019-07-16 16:34
 精彩回答 2  元偷偷看……
camp
6楼-- · 2019-07-16 18:39
楼主的设计是错误的,你所设计,生成的是时序逻辑,不可以使用阻塞赋值。

一周热门 更多>