首页->【FPGA/CPLD助学小组】

462 2

当按键没有被按下,clk上升沿中if条件不符合,则执行else中的:cnt=0;beep=~beep;那么岂不是不按键的话,beep也会响了吗?

module digital_piano(clk,key,beep);

input clk;                   //系统时钟50 MHZ
input[7:0]key;               //按键输入
output beep;              //蜂鸣器输出


reg beep;            

reg[15:0]cnt,freq; //定义寄存器
reg key_flag;

always@(posedge clk)
begin
   if(cnt<freq)
       cnt = cnt + 1;//计数器加1
  else
       begin
          cnt = 0;   //计数器清零
          beep <= ~beep;
       end
end

always@(key)
begin
  case(key)
          8'b11111110: freq<=16'd47774; //中音1的分频系数值
          8'b11111101: freq<=16'd42568; //中音2的分频系数值
          8'b11111011: freq<=16'd37919; //中音3的分频系数值
          8'b11110111: freq<=16'd35791; //中音4的分频系数值
          8'b11101111: freq<=16'd31888; //中音5的分频系数值
          8'b11011111: freq<=16'd28409; //中音6的分频系数值
          8'b10111111: freq<=16'd25309; //中音7的分频系数值
          8'b01111111: freq<=16'd23912; //高音1的分频系数值
          8'b01111110: freq<=16'd21282; //高音2的分频系数值
          8'b01111101: freq<=16'd18961; //高音3的分频系数值
          8'b01111011: freq<=16'h17897; //高音4的分频系数值
          8'b01110111: freq<=16'd15944; //高音5的分频系数值
          8'b01011111: freq<=16'd14205; //高音6的分频系数值
          8'b00111111: freq<=16'd12655; //高音7的分频系数值
              default: freq<=16'd0;
endcase
楼主可见

  1. 米客-显示驱动专家 2#
    代码不完整哇
  2. 米客-显示驱动专家 1#
    always@(posedge clk)
    begin
       if(cnt         cnt = cnt + 1;//计数器加1
      else
           begin
              cnt = 0;   //计数器清零
              beep <= ~beep;
           end

    end


    ???