流水灯不受控制

2019-07-15 22:29发布

input                SYSCLK_50M;                //System clock, 50MHz.
input                RST_B;                //Global reset, low active.
input                PUSH_SW1;                //G
//input                key;                //G

output        [5:0]        LED_DATA;        //LED data output.

//===========================================================================
//Wire and reg declaration
//===========================================================================

wire                SYSCLK_50M;
wire                RST_B;

reg        [5:0]        LED_DATA;
//wire key;reg        [23:0]        TIME_CNT;        //Count the time, everyone show 1ms.
reg        [5:0]        LED_DATA_N;        //Next value of LED_DATA.

wire        [23:0]        TIME_CNT_N;        //Next value of TIME_CNT.
reg led_dir;always @(negedge RST_B or negedge SYSCLK_50M)
begin
  if(!RST_B)
    TIME_CNT    <= `UD 21'b0;
  else
    TIME_CNT    <= `UD TIME_CNT_N;
end

assign        TIME_CNT_N = TIME_CNT + 21'b1;
always @(negedge RST_B or negedge SYSCLK_50M)
begin
  if(!RST_B)
    LED_DATA    <= `UD 6'b11_1110;//这里LED同样是低电平有效,初值只允许一个LED亮
  else
    LED_DATA    <= `UD LED_DATA_N;
         end
always @(negedge RST_B or negedge SYSCLK_50M)
begin
if(!RST_B)

led_dir <=1'b0;
else
begin
        if(PUSH_SW1)
                led_dir <= 1'b0;        //从低到高流动
        else  
        led_dir <= 1'b1;        //从高到低流动
end

endalways @ (*)
begin
if(TIME_CNT == 24'h0 )
                case(led_dir)
                  1'b0: LED_DATA_N = {LED_DATA[5],LED_DATA[4:0]};
                  1'b1: LED_DATA_N = {LED_DATA[4:0],LED_DATA[5]};
                                        default: ;
                endcase
else
  LED_DATA_N = LED_DATA;
end
endmodule

我想的是拨码开关led_dir 为高时流水灯正常流动,为低时反向流动,可我下载到板子上后为低能流动 为高电平时不流动为什么呢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
llf021421
2019-07-16 03:16
本帖最后由 llf021421 于 2016-8-12 22:35 编辑

1.PUSH_SW1是对于本时钟来说,是异步信号,需要使用寄存器打二拍同步,2.PUSH_SW1输入信号要消抖
3.1'b0: LED_DATA_N = {LED_DATA[5],LED_DATA[4:0]};这条语句不会产生LED偏移,应该改为:
1'b0: LED_DATA_N = {LED_DATA[0],LED_DATA[5:1]};

一周热门 更多>