FPGA课程设计(拨码控制流水灯)

本博客介绍了一项FPGA课程设计,通过拨码开关控制流水灯以十赫兹频率显示,模拟呼吸效果。当开关0向下,系统复位,所有灯熄灭;向上时,LED呈现呼吸状变化。扩展部分,设计了两组不同渐变周期的呼吸灯,分别由KEY0和KEY1控制,并用开关1~9设定周期,数码管同步显示周期数值。
摘要由CSDN通过智能技术生成

基本要求:以十赫兹的频率,点亮实验开发板上的发光二极管,显示过程中各个点亮的发光二极管的亮度呈现出明暗变化,形似呼吸。开关0 向下系统复位,灯全灭。开关0向上,LED呈现呼吸状显示。(利用pwm)

扩展部分:

分组显示两组不同渐变周期的呼吸灯,Key0控制LED4~LED0显示, KEY1 控制LED9~LED5显示,渐变周期由开关1~开关9输入,同时数码管分别显示2组呼吸灯对应周期数。

module  led
(
//数据的输入
    input   wire            sys_clk     ,
    input   wire            sys_rst_n   ,  
    input   wire    [9:0]   sw_in       ,  
    input   wire            key_in1     ,  
    input   wire            key_in2     , 

//led的输出
    output  wire   [9:0]   led_out      ,

//前三个数码管显示频率
    output  wire    [6:0]   ge1         ,
    output  wire    [6:0]   shi1        ,
    output  wire    [6:0]   bai1        ,
    
//后三个数码管显示频率
    output  wire  [6:0]   ge2         ,
    output  wire  [6:0]   shi2        ,
    output  wire  [6:0]   bai2     

);



wire    [8:0]     data_in1         ;
wire    [8:0]     data_in2         ;
wire    [10: 0]   bcd1              ;
wire    [10: 0]   bcd2              ;


//key1和key2 控制输入的频率
ctrl ctrl_inst
(
    .sys_clk   (sys_clk)  ,
    .sys_rst_n (sys_rst_n)  ,  
    .sw_in     (sw_in)  ,  
    .key_in1   (key_in1)  ,  
    .key_in2   (key_in2)  ,

    .data_in1  (data_in1) ,
    .data_in2  (data_in2) 
    
);

//开关输入的二进制数,转换为BCD码用于数码管显示
binTobcd binTobcd_inst1
( 

    .bin (data_in1),   // binary

    .bcd (bcd1)
);

binTobcd binTobcd_inst2
( 

    .bin (data_in2),   // binary

    .bcd (bcd2)
);

//led的输出

breath_led breath_led_inst1
(
    .sys_clk     (sys_clk  ),
    .sys_rst_n   (sys_rst_n),
    .data      (data_in1),

    .led_out     (led_out[4:0]  )
);

breath_led breath_led_inst2
(
    .sys_clk     (sys_clk  ),
    .sys_rst_n   (sys_rst_n),
    .data      (data_in2),

    .led_out     (led_out[9:5]  )
);

//数码管显示

seg seg_int1
(
    .sys_clk   (sys_clk)  ,
    .sys_rst_n (sys_rst_n)  ,
    .sw0       (sw_in[0])  ,
    .bcd       (bcd1)  ,

    .ge        (ge1) ,
    .shi       (shi1) ,
    .bai       (bai1) 
);

seg seg_int2
(
    .sys_clk   (sys_clk)  ,
    .sys_rst_n (sys_rst_n)  ,
    .sw0       (sw_in[0])  ,
    .bcd       (bcd2)  ,

    .ge        (ge2) ,
    .shi       (shi2) ,
    .bai       (bai2) 
);


module  breath_led

(
    input   wire          sys_clk     , //系统时钟50Mhz
    input   wire          sys_rst_n   , //key3全局复位
    input   wire   [8:0]  data        ,//获得控制权寄存的数据

    output  reg    [4:0]  led_out  //led的输出
);

reg     [9:0]   cnt_1s  ;
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值