微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 有人可以告诉小弟是什么一回事吗?感激不尽~

有人可以告诉小弟是什么一回事吗?感激不尽~

时间:10-02 整理:3721RD 点击:
module siqu (clk,siquin,siquout);
input clk,siquin;
output siquout;
reg siquout;
reg siqucount;


always @( siquin  )
begin
if(siquin)
begin
repeat(10) @(posedge clk) ;
siqucount=1'b0;  
  
siquout=1'b1;

end
else
siquout=1'b0;
end
endmodule
请大家帮小弟看看这段程序,编译是通过了,但仿真出不了预想的结果,本来是让
repeat(10) @(posedge clk) ;
siqucount=1'b0;  
来产生10个clk周期的延迟的,每一个clk上升沿到来时,siqucount被赋值0,
但现在这个产生10个clk周期的延迟好像被忽略掉了那样,仿真出来的结果没有任何延迟就直接执行siquout=1'b1;
有人可以告诉小弟是什么一回事吗?感激不尽~

先学好verilog规范,以及数字电路基础再写代码吧


这样是得不到你想要的结果的。always @( siquin  )
begin
if(siquin)
begin
repeat(10) @(posedge clk) ;
如果在siquin在repeat(10) @(posedge clk)期间发生变化,根本就采不到数据的。

repeat(10) @(posedge clk) ;
将最后的;去掉

楼上正解
改成这个样子:
always @( siquin  )
begin
if(siquin)
begin
repeat(10)
@(posedge clk)  siqucount=1'b0;
..............................

写的代码不规范,不理解芯片内的电路结构。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top