无法增加变量

时间:2017-03-13 10:31:18

标签: verilog

我目前正在研究一个verilog项目,这个部分给我带来了一些问题。

module adjust_voltage(
input up,
input down,
input CLK,
input max,
input min,
output reg [11:0] TEMP_DATA_A = 12'h7FF,
output reg [11:0] TEMP_DATA_B = 12'h000
);

wire up_pulse;
wire down_pulse;
debounce db1(up, CLK, up_pulse);
debounce db2(down, CLK, down_pulse);

wire voltage_pulse;
assign voltage_pulse = up_pulse^down_pulse;
wire voltage_pulse;
assign voltage_pulse = up_pulse^down_pulse;

always @ (posedge voltage_pulse) begin

    if(max == 1 && min == 0) begin
        if(TEMP_DATA_A >= 12'hF83)
            TEMP_DATA_A = up_pulse ? 12'hFFF : TEMP_DATA_A - 12'h07C;
        else if(TEMP_DATA_A <= 12'h07C)
            TEMP_DATA_A = up_pulse ? TEMP_DATA_A + 12'h07C : 12'h000;
        else
            TEMP_DATA_A = up_pulse ? TEMP_DATA_A + 12'h07C : TEMP_DATA_A - 12'h07C;

        if(TEMP_DATA_A < TEMP_DATA_B)
            TEMP_DATA_A = TEMP_DATA_B;
    end
end
end module

代码对我来说太长了,而且我不太确定如何为verilog制作一个最低限度可行的代码,因为我刚开始学习它而事先抱歉。

基本上在这个模块中,up_pulse和down_pulse是来自我的按钮的去抖动输入。 'max'和'min'是我的2个开关。每当我的最大开关打开并且最小开关打开时,我希望能够使用向上和向下按钮来改变我的TEMP_DATA_A。按下向上时,我想将值增加124.当按下向下时,我想将值减小124.但是,我不希望变量超过12'hFFF或低于12'h000。另外,我不希望TEMP_DATA_A的值低于TEMP_DATA_B(也可以更改但不显示)。

我面临的问题是,当我在我的FPGA上执行此操作时,按下向上按钮时增量为768然后如果再次按下则增量为256,再次按下则增加768并增加再次按下时为256(2047 [初始] - > 2815 - > 3071 - > 3839 - > 4095 [最大])。但是,当我按下向下按钮时它会正常工作,减少124。 有人可以帮我这个吗?谢谢!

0 个答案:

没有答案
相关问题