module led1(clk,rst,led);
input clk,rst;
output led;
parameter time_1 = 27'd5000_0000;
reg[26:0] cnt;
reg led;
always @(posedge clk or negedge rst)
if(!rst)
cnt <= 27'd0;
else if(cnt == time_1)
cnt <= 27'd0;
else
cnt <= cnt + 1'b1;
always @(posedge clk or negedge rst)
if(!rst)
led <= 1'b1;
else if(cnt == time_1)
led <= ~led;
endmodule
仿真
`timescale 1 ns/ 1 ns
module led1_vlg_tst();
reg eachvec;
reg clk;
reg rst;
reg cnt;
wire led;
led1 i1 (
.clk(clk),
.led(led),
.rst(rst)
);
initial
begin
clk = 0;
rst = 0;
#100
rst = 1;
end
always #1 clk = ~clk;
endmodule
仿真時 cnt 為x!!
uj5u.com熱心網友回復:
雖然程式很簡單,但沒有注釋沒人愿意看!uj5u.com熱心網友回復:
程式沒有問題,LZ是不是你仿真的時間軸小了,cnt不能到50,000,000uj5u.com熱心網友回復:
cnt是十進制 ‘d; 你加的是 1’b1;肯定報錯的呀uj5u.com熱心網友回復:
仿真時 cnt 為x說明你的cnt沒有給 出一個初始化值,另外,你的module led1(clk,rst,led);里面定義的cnt沒有引出,你看到的cnt是仿真模塊未初始化的cntuj5u.com熱心網友回復:
初始化CNT值不對,進不去cnt+1轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/64312.html
標籤:硬件設計
下一篇:stm32
