写了一个简易电子琴verilog hdl 代码在QuartusⅡ上编译通过 还写了testbench,但在modelsim上输出却为红线

代码为moduledianziqin(clk,key,buzzout);//模块名称dianziqininputclk;//系统时钟50MHZinput[3:0]key;... 代码为
module dianziqin(clk,key,buzzout);//模块名称dianziqin
input clk; //系统时钟50 MHZ
input[3:0]key; //按键输入
output buzzout; //蜂鸣器输出
reg buzzout_reg;
reg[3:0]key_reg;
reg[22:0]counter,count_end; //定义寄存器
reg key_flg;
initial key_flg = 1'b0;
always@(posedge clk)
begin
counter = counter + 1;//计数器加1
if(counter==count_end)
begin
counter = 0; //计数器清零
if(key_flg==1'b1)
buzzout_reg = ~buzzout_reg;
else buzzout_reg = 1'b0;
end
end
always@(counter[10:9])
begin
key_reg = key;
if(key_reg!=4'b1111)key_flg = 1'b1;
else key_flg = 1'b0;
case(key_reg)
4'b1110: count_end=20'd47774; //中音DO的分频系数
4'b1101: count_end=20'd42568; //中音RE的分频系数
4'b1010: count_end=20'd37919; //中音MI的分频系数
4'b1001: count_end=20'd35791; //中音FA的分频系数
4'b0110: count_end=20'd31888; //中音SOL的分频系数
4'b0101: count_end=20'd28409; //中音LA的分频系数
4'b0010: count_end=20'd25309; //中音SI的分频系数
4'b0001: count_end=20'd23912; //高音DO的分频系数
default: count_end=20'hfffff;
endcase
end
assign buzzout = buzzout_reg;
//assign led = ~key_reg;//输出按键状态
endmodule
带代码表示用4个按键实现中音的do re mi fa sol la si 和高音的do
下面为测试脚本

`timescale 1ns/1 ps
module dianziqin_vlg_tst();
reg clk;
reg [3:0] key;

wire buzzout;
dianziqin i1 (
.buzzout(buzzout),
.clk(clk),
.key(key)
);
initial begin
clk = 0;
forever
#10 clk =~clk;
end
initial begin
key = 4'b1110;
#1000;
$stop;
end
在modelsim-altera上仿真 输入都对 但输出为红线 下面是波形截图
展开
 我来答
010scl
2012-05-15 · TA获得超过468个赞
知道小有建树答主
回答量:324
采纳率:100%
帮助的人:258万
展开全部
测试程序中使用Initial 对输出信号初始化。initial中的begin到end之间的语句只会执行一次。
追问
我换用always语句的话 在modelsim中仿真波形中都没有输入信号了,我也不知道自己在哪出错,如果您比较了解的话可否帮我修改仿真一下呢 感激不敬啊 我的邮箱157227405@qq.com
追答
呵呵,这个还是你自动动手好些,印象更深刻。这种问题遇到不解决 以后还是问题。
百度网友c02e774
2013-01-05 · 超过13用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:33.8万
展开全部
在quartus ii上没问题不代表在modelsim上也没问题
在modelsim上,模块dianziqin里的所有reg型的变量都需要被赋初值!!如果没有赋初值输出会为红色波形!
我这个问题纠结了两个下午呢!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0835e59
2012-05-20 · TA获得超过161个赞
知道答主
回答量:51
采纳率:0%
帮助的人:43.9万
展开全部
vsim 命令中加上 -novopt 参数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
艾琳の小麦
2012-05-15
知道答主
回答量:99
采纳率:0%
帮助的人:42.4万
展开全部
在检查一遍吧,或许是出了什么问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式