OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7118|回复: 1

[其他] 一个简单的仿真问题和预计的波形不一样求助。

[复制链接]

14

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2021-4-4
在线时间
18 小时
发表于 2021-7-20 10:25:34 | 显示全部楼层 |阅读模式
1金钱
从学verilog就知道c<=1在时序电路里是下个时钟周期C才等于1,可是今天仿真的波形当前周期就变1了,特来求助。
源代码如下:
  1. `timescale 1ns / 1ps
  2. module test(
  3.     input clk,
  4.     input rstn,
  5.     input p1,
  6.     input p2,
  7.     input tvalid,
  8.     output reg c,
  9.     output reg o
  10.     );
  11.    // reg c;
  12.     always@(posedge clk or negedge rstn)
  13.     begin
  14.         if(!rstn)
  15.             begin
  16.                 c<=1'b0;
  17.                 o<=1'b0;
  18.             end
  19.         else
  20.             begin
  21.                 o<=&{c,tvalid};
  22.                 if(p1==p2)
  23.                     begin
  24.                         c<=1'b1;
  25.                     end
  26.                 else
  27.                     begin
  28.                         c<=1'b0;
  29.                     end
  30.             end
  31.     end   
  32. endmodule
复制代码
接下来一段是testbench代码段,也很简单:
  1. `timescale 1ns / 1ps
  2. module tb_test(
  3.     );
  4.     reg clk;
  5.     reg rstn;
  6.     reg p1;
  7.     reg p2;
  8.     reg tvalid;
  9.     initial begin
  10.     clk=0;
  11.     rstn=0;
  12.     p1=0;
  13.     p2=1;
  14.     tvalid=0;
  15.     #20 rstn=1;
  16.     #80 tvalid=1;
  17.     end
  18.     always #10 clk=~clk;
  19.     //always #10 p1=~p1;
  20.     always #20 p2=~p2;
  21.     wire o;
  22.     test u_test(
  23.     .clk(clk),
  24.     .rstn(rstn),
  25.     .p1(p1),
  26.     .p2(p2),
  27.     .tvalid(tvalid),
  28.     .c(c),
  29.     .o(o)
  30.     );   
  31. endmodule
复制代码
源代码的作用就是输入p1,p2,tvalid,如果p1==p2,c<=1,同时如果tvalid==1,则o=1
按照道理p1==p2时,下个时钟周期c才置一,但是仿真的波形如下:
看图片红圈部分,此时p1=0,p2=0,这是c直接置一了!!请问,这是我代码哪里有问题吗?

当前周期就置一.PNG
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2021-7-20
在线时间
2 小时
发表于 2021-7-20 14:20:21 | 显示全部楼层
红圈处,上升沿到来之前,p1==p2,所以c等于1,没有问题啊,你问的是什么意思呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 20:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表