这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 185 lan0o0 在本次CPLD DIY开发的进程帖

共28条 3/3 1 2 3 跳转至
助工
2013-09-28 21:18:47     打赏
21楼
module key(sys_clk,
 sys_rstn,
 key_in,
 led,
 sm_bit);
 
input         sys_clk;
input         sys_rstn;
input         key_in;
output [6:0]  led;
output [7:0]  sm_bit;


reg    [7:0] sm_bit;
reg    [3:0] num;
reg    [6:0] led_out;
reg    [6:0] led;


always@(posedge sys_clk or negedge sys_rstn)
begin 
if(!sys_rstn)
num<=4'd1;
else if(!key_in)
   num<=num+4'd1;
else if(num==4'd10)
   num<=4'd0;
else 
   num<=num;
    end

always@(num)
begin
case (num)
4'd0 :led_out=7'hc0;
4'd1 :led_out=7'hf9;
4'd2 :led_out=7'ha4;
4'd3 :led_out=7'hb0;
4'd4 :led_out=7'h99;
4'd5 :led_out=7'h92;
4'd6 :led_out=7'h82;
4'd7 :led_out=7'hf8;
4'd8 :led_out=7'h80; 
4'd9 :led_out=7'h90;
       default:led_out=7'h90;
 endcase
 end
 
always@(posedge sys_clk )


begin 
led<=led_out; 
   sm_bit<=8'b00000000;
end

endmodule

按键控制一位数码管显示0-9  因为没有进行消抖 所以数字显示很不稳定 


专家
2013-09-28 21:34:51     打赏
22楼
楼主拍摄的的确不错  但是这字体颜色 ····     

助工
2013-09-28 21:56:13     打赏
23楼
很骚的一种红 

专家
2013-09-28 22:12:40     打赏
24楼
建议用其他颜色    

助工
2013-09-29 10:42:31     打赏
25楼

按键消抖例子  这个颜色怎么样

module key(sys_clk,

 sys_rstn,
 key_in,
 led_out);
 
input      sys_clk;
input      sys_rstn;
input      key_in;
output     led_out;




reg    led_out;
reg    [19:0] delay_cnt;
wire   key_scan ;
wire   key_low;
reg    key_samp;
reg    key_samp_r;
reg    key_rst;
reg    key_rst_r;






always@(posedge sys_clk or negedge sys_rstn)
begin 
if(!sys_rstn)
key_samp<=1'b1;
else
   key_samp<=key_in;
    end
 
always@(posedge sys_clk or negedge sys_rstn)
begin 
if(!sys_rstn)
key_samp_r<=1'b1;
else 
key_samp_r<=key_samp;
end
assign key_scan=key_samp_r&(~key_samp);


/////////************************////////////////


always@(posedge sys_clk or negedge sys_rstn)
begin 
if (!sys_rstn)
delay_cnt<=20'h0;
else  if(key_scan)
delay_cnt<=20'h0;
else 
delay_cnt<=delay_cnt+1'b1;
end
always@(posedge sys_clk or negedge sys_rstn)
begin 
if(!sys_rstn)
key_rst<=1'b1;
else if (delay_cnt==20'hfffff)
key_rst<=key_in;
    end


 
 always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
key_rst_r<=1'b1;
else 
key_rst_r<=key_rst;
end 
assign key_low=key_rst_r&(~key_rst);


/////////************************////////////////


 always@(posedge sys_clk or negedge sys_rstn)
begin 
if(!sys_rstn)
led_out<=1'b1;
else if(key_low)
led_out<=~led_out;
else
led_out<=led_out;
end
 endmodule


助工
2013-09-29 11:23:53     打赏
26楼

按键第二个实验  消抖 按键加1


module key(sys_clk,

 sys_rstn,
 key_in,
 led,
 sm_bit);
 
input      sys_clk;
input      sys_rstn;
input      key_in;
output     led;
output     sm_bit;


reg    [3:0] num;
reg    [7:0] led_out;
reg    [19:0] delay_cnt;
reg    [7:0] sm_bit;
reg    [7:0] led;


wire   key_scan ;
wire   key_low;
reg    key_samp;
reg    key_samp_r;
reg    key_rst;
reg    key_rst_r;






always@(posedge sys_clk or negedge sys_rstn)
begin 
if(!sys_rstn)
key_samp<=1'b1;
else
   key_samp<=key_in;
    end
 
always@(posedge sys_clk or negedge sys_rstn)
begin 
if(!sys_rstn)
key_samp_r<=1'b1;
else 
key_samp_r<=key_samp;
end
assign key_scan=key_samp_r&(~key_samp);


/////////************************////////////////


always@(posedge sys_clk or negedge sys_rstn)
begin 
if (!sys_rstn)
delay_cnt<=20'h0;
else  if(key_scan)
delay_cnt<=20'h0;
else 
delay_cnt<=delay_cnt+1'b1;
end
always@(posedge sys_clk or negedge sys_rstn)
begin 
if(!sys_rstn)
key_rst<=1'b1;
else if (delay_cnt==20'hfffff)
key_rst<=key_in;
    end


 
 always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
key_rst_r<=1'b1;
else 
key_rst_r<=key_rst;
end 
assign key_low=key_rst_r&(~key_rst);


/////////************************////////////////


 always@(posedge sys_clk or negedge sys_rstn)
begin 
if(!sys_rstn)
num<=4'd0;
else if(key_low)
num<=num+4'd1;
else if (num==4'd10)
num=4'd0;
else
num<=num;
end

always@(num)
begin 
case (num)
4'd0 :led_out=8'hc0;
4'd1 :led_out=8'hf9;
4'd2 :led_out=8'ha4;
4'd3 :led_out=8'hb0;
4'd4 :led_out=8'h99;
4'd5 :led_out=8'h92;
4'd6 :led_out=8'h82;
4'd7 :led_out=8'hf8;
4'd8 :led_out=8'h80; 
4'd9 :led_out=8'h90;
       default:led_out=8'h90;
 endcase
 end
 
always@(posedge sys_clk )
begin 
led<=led_out; 
sm_bit<=8'b00000000; 
end


endmodule

助工
2013-09-29 12:42:53     打赏
27楼

蜂鸣器实验一 颜色越来越骚

警车声音

module jiuhuoche(sys_clk,
sys_rstn,
beep);
input   sys_clk ;
input   sys_rstn;
output  beep;


reg beep;
reg [24:0] div_cnt;
reg [14:0] delay_cnt;
wire[14:0] delay_end;


parameter clk_diver0=26817;
parameter clk_diver1=18408;
assign  delay_end=div_cnt[24] ? clk_diver0:clk_diver1;


always@(posedge sys_clk or negedge sys_rstn)
begin 
if (!sys_rstn)
div_cnt<=25'd0;
else 
div_cnt<=div_cnt+1'b1;
end


always@(posedge sys_clk or negedge sys_rstn)
begin 
if (!sys_rstn)
delay_cnt<=delay_end;
else if(delay_cnt==15'd0)
begin
beep <=~beep;
delay_cnt<=delay_end;
end
else 
delay_cnt<=delay_cnt-1'b1;
end
endmodule 


助工
2013-09-29 15:00:12     打赏
28楼

第二个实验例子

module key_piano(sys_clk,

sys_rstn,
key_in,
beep);
input   sys_clk ;
input   sys_rstn;
input  [7:0] key_in;
output  beep;


reg beep;
reg [14:0] delay_cnt;
reg [14:0] delay_end;






always@(posedge sys_clk or negedge sys_rstn)
begin 
if (!sys_rstn)
delay_cnt<=16'd0;
else if ((delay_cnt==delay_end)&(!(delay_end==16'hffff)) )
begin 
delay_cnt<=16'd0;
beep<=~beep;
end
else
delay_cnt<=delay_cnt+1'b1;
end


always@(key_in)
begin 
case (key_in)
8'b11111110:delay_end=16'd47774;
8'b11111101:delay_end=16'd42568;
8'b11111011:delay_end=16'd37919;
8'b11110111:delay_end=16'd35791;
8'b11101111:delay_end=16'd31888;
8'b11011111:delay_end=16'd28409;
8'b10111111:delay_end=16'd25309;
8'b01111110:delay_end=16'd23912;
8'b01111101:delay_end=16'd21282;
8'b01111011:delay_end=16'd18961;
8'b01110111:delay_end=16'd17897;
8'b01101111:delay_end=16'd15944;
8'b01011111:delay_end=16'd14205;
8'b00111111:delay_end=16'd12655;
default:delay_end=16'd65535;
endcase
end
endmodule 

共28条 3/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]