差别
这里会显示出您选择的修订版和当前版本之间的差别。
— |
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> |