差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
流水灯 [2016/06/12 13:02] gongyu [设计要求] |
流水灯 [2021/09/13 01:39] (当前版本) gongyu |
||
---|---|---|---|
行 1: | 行 1: | ||
- | =====流水灯===== | + | ## 流水灯 |
====硬件平台==== | ====硬件平台==== | ||
行 40: | 行 40: | ||
{{ :流水灯程序设计.jpg |流水灯程序设计}} | {{ :流水灯程序设计.jpg |流水灯程序设计}} | ||
- | 为了实现对8个LED的控制,我们设计了25位的计数器cnt进行1s周期的循环计数,同时我们定义了一个4位寄存器led_cnt作为状态机的状态控制流水灯的闪烁。状态机共有8个状态,每一个状态对应点亮一个LED灯。 | + | 为了实现对8个LED的控制,我们设计了25位的计数器cnt进行1s周期的循环计数,同时我们定义了一个3位寄存器led_cnt作为状态机的状态控制流水灯的闪烁。状态机共有8个状态,每一个状态对应点亮一个LED灯。 |
首先是计数器的设计,计数器的计数范围为0~CNT_NUM-1,为了实现每个LED灯1秒的点亮时间,设计文件代码中我们定义参数CNT_NUM为25000000,但是在仿真文件调用设计文件时,为了方便仿真,我们会将参数CNT_NUM重新赋值为10. | 首先是计数器的设计,计数器的计数范围为0~CNT_NUM-1,为了实现每个LED灯1秒的点亮时间,设计文件代码中我们定义参数CNT_NUM为25000000,但是在仿真文件调用设计文件时,为了方便仿真,我们会将参数CNT_NUM重新赋值为10. | ||
行 60: | 行 60: | ||
<code verilog> | <code verilog> | ||
- | reg [3:0] led_cnt = 4'd0; | + | reg [2:0] led_cnt = 3'd0; |
always@(posedge clk_in or negedge rst_n_in) begin | always@(posedge clk_in or negedge rst_n_in) begin | ||
if(!rst_n_in) begin | if(!rst_n_in) begin | ||
- | led_cnt <= 4'd0; | + | led_cnt <= 3'd0; |
end else if(cnt==CNT_NUM-1) begin | end else if(cnt==CNT_NUM-1) begin | ||
- | if(led_cnt==4'd7) led_cnt <= 4'd0; | + | if(led_cnt==3'd7) led_cnt <= 3'd0; |
- | else led_cnt <= led_cnt + 4'd1; | + | else led_cnt <= led_cnt + 3'd1; |
end | end | ||
end | end | ||
行 76: | 行 76: | ||
always@(led_cnt) begin | always@(led_cnt) begin | ||
case(led_cnt) | case(led_cnt) | ||
- | 4'd0: led_out = 8'b1111_1110; | + | 3'd0: led_out = 8'b1111_1110; |
- | 4'd1: led_out = 8'b1111_1101; | + | 3'd1: led_out = 8'b1111_1101; |
- | 4'd2: led_out = 8'b1111_1011; | + | 3'd2: led_out = 8'b1111_1011; |
- | 4'd3: led_out = 8'b1111_0111; | + | 3'd3: led_out = 8'b1111_0111; |
- | 4'd4: led_out = 8'b1110_1111; | + | 3'd4: led_out = 8'b1110_1111; |
- | 4'd5: led_out = 8'b1101_1111; | + | 3'd5: led_out = 8'b1101_1111; |
- | 4'd6: led_out = 8'b1011_1111; | + | 3'd6: led_out = 8'b1011_1111; |
- | 4'd7: led_out = 8'b0111_1111; | + | 3'd7: led_out = 8'b0111_1111; |
default: led_out = 8'b1111_1111; | default: led_out = 8'b1111_1111; | ||
endcase | endcase | ||
行 114: | 行 114: | ||
^ 资源 | 数量 | 比例 | 说明 | | ^ 资源 | 数量 | 比例 | 说明 | | ||
- | ^ LUTs | 28 | 4% | | | + | ^ LUTs | 27 | 4% | | |
- | ^ 寄存器 | 33 | 2% | | | + | ^ 寄存器 | 28 | 2% | | |
^ 存储器 | 0 | 0% | | | ^ 存储器 | 0 | 0% | | | ||
^ IO管脚 | 10 | | | | ^ IO管脚 | 10 | | | |