【发布时间】:2013-11-20 06:29:41
【问题描述】:
我想弄清楚为什么模拟输出都是 X 的原因。通过在整个网络上查找 verilog 问题,在我看来,大多数问题都源于 reg 与 wire 的事故,但如果觉得它可能仍然是我的困境的根源。
如果有人能告诉我在编写我的模块和模块的测试台时我做错了什么,我将不胜感激。
该模块是一个存钱罐,可以根据硬币增加其信用或根据购买的物品删除信用。我正在使用一个 8 位累加器。
测试台还远未完成,但我只是想得到“x”以外的东西,但无济于事。再次感谢您的帮助。
module piggyBank(clk, reset, penny, nickel, dime, quarter, apple, banana, carrot, date, credit);
input clk, reset, penny, nickel, dime, quarter;
input apple, banana, carrot, date;
output [7:0] credit;
reg [7:0] tmp;
always @(posedge clk or posedge reset)
begin
if (reset)
tmp = 8'b00000000;
if (penny || nickel || dime || quarter)
tmp = tmp + penny + (5 * nickel) + (10 * dime) + (25 * quarter);
if (apple || banana || carrot || date)
tmp = tmp - (apple * 75) - (20 * banana) - (30 * carrot) - (40 * date);
end
assign credit = tmp;
endmodule
module testPiggyB();
reg clk;
reg reset, penny, nickel, dime, quarter;
reg apple, banana, carrot, date;
wire [7:0] credit;
initial begin
clk <= 0;
forever #5 clk <= ~clk;
reset <= 0;
penny <= 0; nickel <= 0; dime <= 0; quarter <= 0;
apple <= 0; banana <= 0; carrot <= 0; date <= 0;
#5quarter <= 1;
#40 quarter <= 0;
end
piggyBank pb(.clk(clk), .reset(reset), .penny(penny) ,.nickel(nickel), .dime(dime), .quarter(quarter), .apple(apple), .banana(banana), .carrot(carrot), .date(date), .credit(credit));
endmodule
【问题讨论】: