// 刚刚开始学习使用verilog,请各位指教
// 我写了如下代码:
// 功能: 实现一个可控的十进制计数器
module ramuse( cntout, mclk, dinen);
output [7:0] cntout;
input mclk, dinen;
reg cntout;
reg [7:0] cnt = 0;
always @(posedge mclk ) begin
if(dinen == 1)
begin
if(cnt<=9)
cnt=cnt+1;
else
cnt=0;
end
else
cnt = 0;
cntout = cnt;
end
//assign cntout = cnt;
endmodule
// 问题:
// 不知为什么,功能仿真时cntout的输出是高阻态,而在时序仿真时的结果却正常得很
// 哪位仁兄帮忙解释一下这是什么问题啊
// 谢谢
这是功能仿真后的图
这是时序仿真后的图
你的程序一看就有错误啊!
reg [7:0] cnt = 0;这样赋初值是错误的.
reg cntout;应为上面一样.
还有最后一个else
cnt = 0;
cntout = cnt;
应加begin-end语句.
正确的应是:
module ramuse( cntout, mclk, dinen);
output [7:0] cntout;
input mclk, dinen;
reg[7:0] cntout;
reg [7:0] cnt;
always @(posedge mclk )
begin
if(dinen == 1)
begin
if(cnt<=9)
cnt=cnt+1;
else
cnt=0;
end
else
begin
cnt = 0;
cntout = cnt;
end
end
//assign cntout = cnt;
endmodule
功能不知对不对,下次帮你看看!
这个试试啊!
module ramuse( clr, clk, cout);
output [7:0] cout;
input clr,clk;
reg[7:0] cout;
integer i;
always @(posedge clk )
begin
if(!clr)
cout<=0;
else if(i==9)
begin
i<=0;
cout<=cout+1;
end
else
begin
i<=i+1;
cout<=0;
end
end
endmodule
仿真图像是这样的:
靠!不支持图像啊!你自己试试吧!
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |