差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

breath_led.v [2016/06/15 11:44] (当前版本)
anran 创建
行 1: 行 1:
 +====呼吸灯设计文件====
  
 +<code verilog>
 +// --------------------------------------------------------------------
 +// >>>>>>>>>>>>>>>>>>>>>>>>>​ COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<​
 +// --------------------------------------------------------------------
 +// Module: Breath_led
 +// 
 +// Author: Step
 +// 
 +// Description:​ PWM-Breath_led
 +// 
 +// Web: www.ecbcamp.com
 +//
 +// --------------------------------------------------------------------
 +// Code Revision History :
 +// --------------------------------------------------------------------
 +// Version: |Mod. Date:   ​|Changes Made:
 +// V1.0     ​|2015/​11/​11 ​  ​|Initial ver
 +// --------------------------------------------------------------------
 +module Breath_led #
 +(
 +parameter CNT_NUM = 5000 //​period = (5000^2)*2 = 50000000 = 2s
 +)
 +(
 +input clk_in,​ //​system clk
 +input rst_n_in,​ //​system reset
 +output Breath_led //​Breath led output
 +);
 +
 +reg [12:​0] cnt1;​
 +//generate cnt1 signal
 +always@(posedge clk_in or negedge rst_n_in) begin 
 + if(!rst_n_in) begin
 + cnt1<​=13'​d0;​
 + end else begin
 + if(cnt1>​=CNT_NUM-1) cnt1<​=1'​b0;​
 + else cnt1<​=cnt1+1'​b1;​
 + end
 +end
 +
 +reg flag;
 +reg [12:​0] cnt2;​
 +//generate cnt2 signal
 +always@(posedge clk_in or negedge rst_n_in) begin 
 + if(!rst_n_in) begin
 + cnt2<​=13'​d0;​
 + flag<​=1'​b0;​
 + end else begin
 + if(cnt1==CNT_NUM-1) begin
 + if(!flag) begin
 + if(cnt2>​=CNT_NUM-1) flag<​=1'​b1;​
 + else cnt2<​=cnt2+1'​b1;​
 + end else begin
 + if(cnt2<​=0) flag<​=1'​b0;​
 + else cnt2<​=cnt2-1'​b1;​
 + end
 + end else cnt2<​=cnt2;​
 + end
 +end
 +
 +//Compare cnt1 and cnt2, generate PWM-Breath-led
 +assign Breath_led = (cnt1<​cnt2)?​1'​b0:​1'​b1;​
 +
 +endmodule
 +
 +</​code>​