fpga设计中关于初值的问题
最近在做一个出租车计费器的东西……我想设计这样一个模块,用于预置起步价和加价,有以下输入state_done,set_state 这两信号是由前段的fsm供给,经过实验测试,fsm输出没有问题;
in_base_price,in_add_price 这两信号,是由前端的bcd码加法器给出,加法器也没什么问题;base是起步价,add是加价;
price_led;这是另一路输入信号……和预置的时候无关
输出为base_price, add_price起步价、加价;和给后面八位数码管显示模块输入 led_out;
然后希望在
{state_done,set_state}=10的时候,对起步价寄存器re_base进行修改起步价,同时保持re_add不变,同时输出16'hba5e,base_price,即显示BASE+起步价;
{state_done,set_state}=11的时候,对起步价寄存器re_add进行修改起步价,同时保持re_base不变,同时输出16'haddf,add_price,即显示ADD+加价;
通过这样的方式,可以方便的知道预置的数值是多少……
然后当state_done=0时,锁存住当时的re_base和re_add,同时输出输出为base_price, add_price起步价、加价,保持不变……
初始值有问题,也就是说,一开始前端fsm模块给state_done,set_state两个信号的值都是0时,
模块输出应该是re_base和re_add的初值……可是,测试的时候……这两个数……明显不是初值啊……
各种乱码……求解哦……
附上修改后代码……
module set_done(
// state_done, in_base_price,in_add_price,base_price,add_price,set_price_led,price_led,led_out
state_done, set_state,in_base_price,in_add_price,base_price,add_price,led_out,price_led
);
input state_done;
input set_state;
input in_base_price;
input in_add_price;
//input set_price_led;
input price_led;
output base_price;
output add_price;
output led_out;
reg base_price;
reg add_price;
reg led_out;
//reg base_price=16'b0000000010000000;
//reg add_price=16'b0000000000011000;
reg re_base=16'b0000000010000000;
reg re_add =16'b0000000000011000;
always @ (state_done or in_base_price or in_add_price or set_state )
//always @ (state_done or set_state )
begin
case({state_done,set_state})
2'b10: begin
//base_price = in_base_price;
//add_price = in_add_price;
//re_add = add_price;
re_base = in_base_price;
led_out = {16'hba5e,re_base};
end
2'b11 :begin
//base_price = in_base_price;
//add_price = in_add_price;
re_add = in_add_price;
//re_base = in_base_price;
led_out = {16'haddf,re_add};
end
default :begin
base_price = re_base;
add_price = re_add;
led_out = price_led;
/*base_price = 16'b0000000010000000;
add_price = 16'b0000000000011000;
led_out = price_led;*/
end
endcase
/* if(state_done == 1'b0)
begin
base_price = base_price;
add_price = add_price;
led_out = price_led;
end
else begin
base_price = in_base_price;
add_price = in_add_price;
led_out = set_price_led;
end */
end
endmodule 终于通过审核了……编辑主题……这楼也编辑了……清爽很多啊
页:
[1]