回答

收藏

基于AlteraFPGA的led测试程序

#开源分享 #开源分享 2241 人阅读 | 0 人回复 | 2014-01-23

下面是板子的测试程序LED灯的,通过计数分频产生LED扫描时钟
/*-----版权声明-----
*     ETRH Studio——带领入门FPGA,打造不一样的学习方式
*     网站:http://www.etrh.co
*     论坛:https://www.cirmall.com/
*     淘宝:http://etrh.taobao.com
*     邮箱:etrh@foxmail.com
*
*-----文件信息-----
*     文件名称:led.v
*     最后修改日期:14.1,2014
*     描述:2个流水灯,通过主时钟分频产生扫描时钟,在每个时钟来临led_r加1计数,
*     2位2进制计数,产生由00-01-10-11,循环点亮led
*------------------
*     创建者:ETRH        
*     创建日期:14.1, 2014
*     版本:1.0
*     描述:原始版本
*-------------------
*/
module led(
  input        CLOCK_50,                // 板载时钟50MHz
  input        Q_KEY,                   // 板载按键RST
  output [1:0] LED                      // LED[1] ~ LED[8]
);   

//++++++++++++++++++++++++++++++++++++++
// 分频部分 开始
//++++++++++++++++++++++++++++++++++++++
reg [23:0] cnt;                         // 计数子

// 溢出后自动重新计数
always @ (posedge CLOCK_50, negedge Q_KEY)
  if (!Q_KEY)
    cnt <= 0;
  else
    cnt <= cnt + 1'b1;

wire led_clk = cnt[23];                 // 每(2^24/50M = 0.3355)sec取一次
//--------------------------------------
// 分频部分 结束
//--------------------------------------

//++++++++++++++++++++++++++++++++++++++
// 流水灯部分 开始
//++++++++++++++++++++++++++++++++++++++
reg [1:0] led_r;                        // 定义输出寄存器

always @ (posedge led_clk, negedge Q_KEY)
  if (!Q_KEY)                           // 复位
    led_r <= 2'b0;                        
  else
     led_r<=led_r+1'b1;
          
assign LED = led_r;                    // 寄存器输出
//--------------------------------------
// 流水灯部分 结束
//--------------------------------------

endmodule



分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条