首页 > 其他 > 详细

习题8 #第8章 Verilog有限状态机设计-3 #Verilog #Quartus #modelsim

时间:2020-10-14 00:19:53      阅读:127      评论:0      收藏:0      [点我收藏+]

3. 编写一个8路彩灯控制程序,要求彩灯有以下3种演示花型。

(1) 8路彩灯同时亮灭;

(2) 从左至右逐个亮(每次只有1路亮);

(3) 8路彩灯每次4路灯亮,4路灯灭,且亮灭相间,交替亮灭。

在演示过程中,只有当一种花型演示完毕才能转向其他演示花型。

 

3.1 设计思路:8个灯,3种花型,顺序展示。穷举法。8个灯的所有花型状态,共计有:亮灭2种,

                       逐个亮8种,4亮4灭交替2种。即:8‘b0000_0000,

                                                                              8‘b1111_1111,

                                                                              8‘b1000_0000,

                                                                              ... ...

                      共12种状态。

3.2 8路彩灯,3种花型,控制电路源码:

 

 1 // 8-bit light and 3 shows
 2 //2020-10-13 
 3 // by YongFengXie
 4 module ex8_3(clk,rst_n,lamb);
 5 input clk;
 6 input rst_n;
 7 output reg [7:0] lamb;
 8 
 9 reg [3:0] state;
10 
11 parameter s0=4b0000,
12           s1=4b0001,
13           s2=4b0011,
14           s3=4b0010,
15           s4=4b0110,
16           s5=4b0111,
17           s6=4b0101,
18           s7=4b0100,
19           s8=4b1100,
20           s9=4b1101,
21           s10=4b1111,
22           s11=4b1110;
23 
24 always @(posedge clk or negedge rst_n)
25 begin
26   if(!rst_n)
27     begin
28       state<=s0;
29       lamb<=8b0000_0000; // all off
30     end
31   else
32     begin
33       case(state)
34         s0:begin                 // 1 mode
35              state<=s1;
36              lamb<=8b0000_0000; // all off
37            end
38         s1:begin
39              state<=s2;
40              lamb<=8b1111_1111; // all on
41            end
42         s2:begin                 // 2 mode
43              state<=s3;
44              lamb<=8b1000_0000; // 1st on(from left to right)
45            end
46         s3:begin
47              state<=s4;
48              lamb<=8b0100_0000; // 2nd on
49            end
50         s4:begin
51              state<=s5;
52              lamb<=8b0010_0000; // 3rd on(from left to right)
53            end
54         s5:begin
55              state<=s6;
56              lamb<=8b0001_0000; // 4th on
57            end
58         s6:begin
59              state<=s7;
60              lamb<=8b0000_1000; // 5th on
61            end
62         s7:begin
63              state<=s8;
64              lamb<=8b0000_0100; // 6th on
65            end
66         s8:begin
67              state<=s9;
68              lamb<=8b0000_0010; // 7th on
69            end
70         s9:begin
71              state<=s10;
72              lamb<=8b0000_0001; // 8th on
73            end
74         s10:begin                // 3 mode
75              state<=s11;
76              lamb<=8b0101_0101; // 4 on 4 off
77            end
78         s11:begin
79              state<=s0;
80              lamb<=8b1010_1010; // 4 on 4 off
81            end
82         default:begin
83                   state<=s0;
84                   lamb<=8b0000_0000; 
85                 end
86       endcase
87     end
88 end
89 
90 endmodule

 

 

3.3 8路彩灯3种花型测试代码:

 1 //ex8_3 testbench
 2 //2020-10-13 
 3 // by YongFengXie
 4 `timescale 1ns/1ns
 5 module ex8_3tb;
 6 reg clk;
 7 reg rst_n;
 8 wire [7:0] lamb;
 9 
10 initial begin
11           clk=1b0;
12           rst_n=1b0;
13           #40 rst_n=1b1;
14           #200 $stop;
15         end
16 
17 always #5 clk=~clk;
18 
19 ex8_3 ub(clk,rst_n,lamb);
20 
21 endmodule

 

3.4  8路彩灯3种花型控制电路的仿真结果如图ex8_3_1所示:

技术分享图片

               图ex8_3_1 8路彩灯控制电路仿真结果

 

3.5 8路彩灯控制电路状态转化图如图ex8_3_2所示:

技术分享图片                         图ex8_3_2  8路彩灯控制电路状态转换图

 

3.6 总结:8路彩灯花型显示的控制电路采用了穷举法来规划12种状态。其中3种演示模式自动按顺序循环演示,可添加模式控制端口,手动切换不同模式。这里投机,省略。其实就是if else。另外,模式2,应该可以用右移来实验。                                    

习题8 #第8章 Verilog有限状态机设计-3 #Verilog #Quartus #modelsim

原文:https://www.cnblogs.com/halflife/p/13812254.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!