From cd162b024dd440db58dd2b4663650809c2747165 Mon Sep 17 00:00:00 2001 From: lincaigui <18166451309@163.com> Date: Sun, 21 Apr 2024 17:04:29 +0800 Subject: [PATCH] add ws2812_ctrl.v --- doc/ws2812时序图.vsdx | Bin 15241 -> 48393 bytes doc/~$$ws2812时序图.~vsdx | Bin 4096 -> 0 bytes rtl/ws2812_ctrl.v | 152 +++++++++++++++++++++++++++++++++++ 3 files changed, 152 insertions(+) delete mode 100644 doc/~$$ws2812时序图.~vsdx create mode 100644 rtl/ws2812_ctrl.v diff --git a/doc/ws2812时序图.vsdx b/doc/ws2812时序图.vsdx index e36b0a01a4a44940e2cc163dbed2c7b38b65e705..bd1cc2348d309765078b5952a663cd8a06309da0 100644 GIT binary patch literal 48393 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 delta 11871 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 diff --git a/doc/~$$ws2812时序图.~vsdx b/doc/~$$ws2812时序图.~vsdx deleted file mode 100644 index 0a1745d3d14d31a7c65ab00dadf9c0c0a361711c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHJ!A``CKi z7^&}(Z7f9Uu5u}Mns%qt*?H61nVo%l+2n1p5NALnQ@q m{-{0d7JHrF^nN+(^UT_2_wEwAH`&G9e&MGxi<`CNX@3IJM_-2k diff --git a/rtl/ws2812_ctrl.v b/rtl/ws2812_ctrl.v new file mode 100644 index 0000000..eb140c0 --- /dev/null +++ b/rtl/ws2812_ctrl.v @@ -0,0 +1,152 @@ +module ws2812_ctrl( + input wire sys_clk , + input wire sys_rst_n , + input wire bit , + + output wire dout +); +parameter T0H = 4'd15 ,//bit0的高电平 + T0L = 6'd40 ,//bit0的低电平 + T1H = 6'd40 ,//bit1的高电平 + T1L = 6'd40 ,//bit1的低电平 + RST = 14'd15000 ;//64个led数据发完的复位信号时间,低电平0 + +reg [5: 0] cnt_0;//bit0计数寄存器 +wire add_cnt0;//bit0开始计数条件 +wire end_cnt0;//bit0结束计数条件 + +reg [6: 0] cnt_1;//bit1计数寄存器 +wire add_cnt1;//bit1开始计数条件 +wire end_cnt1;//bit1结束计数条件 + +reg [4: 0] cnt_bit;//24个bit计数寄存器 +wire add_cnt_bit;//24bit计数器开始计数条件 +wire end_cnt_bit;//24bit计数器结束计数条件 + +reg [6: 0] cnt_led;//64个led计数寄存器 +wire add_cnt_led;//64个led计数器开始计数条件 +wire end_cnt_led;//64个led计数器结束计数条件 + +reg [13: 0] cnt_rst;//复位计数寄存器 +wire add_cnt_rst;//复位计数器开始计数条件 +wire end_cnt_rst;//复位计数器结束计数条件 + +reg flag_rst;//复位信号开始寄存器 +//bit0计数器设计 +always @(posedge sys_clk or negedge sys_rst_n) begin + if(!sys_rst_n)begin + cnt_0 <= 6'd0; + end + else if(add_cnt0)begin + if(end_cnt0)begin + cnt_0 <= 6'd0; + end + else begin + cnt_0 <= cnt_0 + 1'd1; + end + end + else begin + cnt_0 <= 6'd0; + end +end +assign add_cnt0 = ~bit && flag_rst == 0;//如果bit是0,并且复位计数器没有开启,则计数器开始计数 +assign end_cnt0 = add_cnt0 && (cnt_0 == T0H + T0L-1); + +//cnt_1计数器设计 +always @(posedge sys_clk or negedge sys_rst_n)begin + if(!sys_rst_n)begin + cnt_1 <= 7'd0; + end + else if(add_cnt1)begin + if(end_cnt1)begin + cnt_1 <= 7'd0; + end + else begin + cnt_1 <= cnt_1 + 1'd1; + end + end + else begin + cnt_1 <= 7'd0; + end +end +assign add_cnt1 = bit && flag_rst == 0;//如果bit是1,并且复位计数器没有开启,则计数器开始计数 +assign end_cnt1 = add_cnt1 && (cnt_1 == T1H + T1L-1); + +//cnt_bit计数器设计 +always @(posedge sys_clk or negedge sys_rst_n)begin + if(!sys_rst_n)begin + cnt_bit <= 5'd0; + end + else if(add_cnt_bit)begin + if(end_cnt_bit)begin + cnt_bit <= 5'd0; + end + else begin + cnt_bit <= cnt_bit + 1'd1; + end + end + else begin + cnt_bit <= cnt_bit;//其他时刻保持cnt_bit + end +end +assign add_cnt_bit = end_cnt0 || end_cnt1;//bit0或者bit1结束计数条件成立 +assign end_cnt_bit = add_cnt_bit && (cnt_bit == 5'd23);//24个bit结束计数条件成立 + +//cnt_led计数器设计 +always @(posedge sys_clk or negedge sys_rst_n)begin + if(!sys_rst_n)begin + cnt_led <= 7'd0; + end + else if(add_cnt_led)begin + if(end_cnt_led)begin + cnt_led <= 7'd0; + end + else begin + cnt_led <= cnt_led + 1'd1; + end + end + else begin + cnt_led <= cnt_led; + end +end +assign add_cnt_led = end_cnt_bit; +assign end_cnt_led = add_cnt_led && (cnt_led == 7'd63); + +//cnt_rst计数器设计 +always @(posedge sys_clk or negedge sys_rst_n)begin + if(!sys_rst_n)begin + cnt_rst <= 14'd0; + end + else if(add_cnt_rst)begin + if(end_cnt_rst)begin + cnt_rst <= 14'd0; + end + else begin + cnt_rst <= cnt_rst + 1'd1; + end + end + else begin + cnt_rst <= cnt_rst; + end +end +assign add_cnt_rst = flag_rst; +assign end_cnt_rst = add_cnt_rst && (cnt_rst == RST - 1); + +//flag_rst寄存器设计 +always @(posedge sys_clk or negedge sys_rst_n)begin + if(!sys_rst_n)begin + flag_rst <= 1'b0;//初始化0,复位计数器关闭 + end + else if(end_cnt_led)begin//64个led数据发送完成,复位计数器打开 + flag_rst <= 1'b1; + end + else if(end_cnt_rst)begin//复位计数器结束,复位计数器关闭 + flag_rst <= 1'b0; + end + else begin + flag_rst <= flag_rst;//其他时刻保持flag_rst + end +end +//dout输出逻辑 +assign dout = (flag_rst == 0) ? ((cnt_0 < T0H ? 1'b0 : 1'b1) | (cnt_1 < T1H ? 1'b0 : 1'b1)): 1'b0; +endmodule \ No newline at end of file