您好,我是fpga的初学者,想请教一下 怎么设定一个verilog程序的运行时间呢?

您好,我是fpga的初学者,想请教一下 怎么设定一个verilog程序的运行时间呢?,第1张

fpga和你之前学过的单片机之类的不一样的

labview里是有设定程序的运行时间这个说法

但是fpga没有,fpga的运行时间是根据你用的开发板的,现在比较常见的就是50MHZ的时钟,就是20ns一个clk。你可以通过分频来获得想要的时钟频率

当然你在仿真的时候可以直接改变某个输入的时钟频率,至于怎么改要看你用的是哪个软件了

module Timer_Design( 

input wire clk, //时钟信号输入端F = 1Hz P = 1s

input wire res,    //复位信号,Low Active低有效

input wire [1:0] data,   //定时模式[长短]选择

output  reg x       

)

/*******************************功能描述***************************

data = 2'b00 -> 无定时, 告警信号X一直为0

data = 2'b01 -> 5s定时, 告警信号X保持6s的高,但是5s就会输出一个

    告警,这个有一点冲突

data = 2'b10 -> 10s定时,每隔10s输出一个告警信号,告警信号保持6s

data = 2'b11 -> 15s定时,每隔15输出一个告警有效信号

******************************************************************/

//这里有一个不明确的地方,是否定时是一直在运行,如果一直在运行定时,那么第一个假设定时时间是5s

//5s到了之后告警信号拉高,此时定时清零继续运行,告警信号要保持6s的高,那么5s定时到的时候告警信

//号依旧是高,以此循环,5S定时的话X会一直保持高。

//另外一种情况是定时一直在运行,但是X持续高时间需要低于定时周期5s

//第三种可能是定时不一直运行,定时到5s之后,X输出6s的高,此时定时是停止的,6s之后重新开始定时

//但是这个定时周期的定义就有问题了

//所以考虑以上情况,我选择第二种,将X持续时间缩短到3s

reg [3:0] timer_cnt

always @(posedge clk,negedge res) begin

if(!rss) begin

x <= 1'b0

timer_cnt <= 4'd0

end

else case(data)

2'b00 : begin

x <= 1'b0

timer_cnt <= 4'd0

end

2'b01 : begin //定时5s

if(timer_cnt <= 4'd1) begin

x <= x //刚开始定时的时候不能将之拉高,所以这里用保持

timer_cnt <= timer_cnt + 1'b1

end

else if(timer_cnt <= 4'd3) begin

timer_cnt <= timer_cnt + 1'b1

x <= 1'b0

end

else begin //timer_cnt = 4

timer_cnt  <= 4'd0

x <= 1'b1

end

end

2'b10 : begin //定时10

if(timer_cnt <= 4'd1) begin //x保持3s的高

x <= x  //刚开始定时的时候不能将之拉高,所以这里用保持

timer_cnt <= timer_cnt + 1'b1

end

else if(timer_cnt <= 4'd8) begin

timer_cnt <= timer_cnt + 1'b1

x <= 1'b0

end

else begin //timer_cnt = 9

timer_cnt  <= 4'd0

x <= 1'b1

end

end

2'b11 : begin //定时15

if(timer_cnt <= 4'd1) begin //x保持3s的高

x <= x  //刚开始定时的时候不能将之拉高,所以这里用保持

timer_cnt <= timer_cnt + 1'b1

end

else if(timer_cnt <= 4'd13) begin   //cnt = 2~(14-1)

timer_cnt <= timer_cnt + 1'b1

x <= 1'b0

end

else begin //timer_cnt = 14

timer_cnt  <= 4'd0

x <= 1'b1

end

end

            default :

endcase

end

endmodule

有问题可以补充。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11785108.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存