Vivado源程序关于采用 EGo1 中的两组数码管,让该8个数码管循环显示:01234567, 12345678,23456789..电路的输入信号 en 进行启动或暂停:用按键控制循环,拔一下显示下一组数
时间: 2024-02-28 15:55:32 浏览: 98
数码管显示.zip_EGO1数码管_Ego1 数码管_ego1_ego1 fpga_滚动学号
5星 · 资源好评率100%
以下是一个可能的Vivado源程序的示例,实现了你所描述的功能:
```verilog
module digit_display (
input clk, // 时钟信号
input en, // 启动或暂停信号
input next, // 下一个数的信号
output [7:0] a // 数码管输出信号
);
reg [3:0] count = 4'b0000; // 计数器,用于切换数码管
reg [23:0] delay_count = 24'b000000000000000000000000; // 延时计数器,用于控制显示延时
// 数码管对应的8位数字
wire [7:0] digit_0 = 8'b00111111; // 0
wire [7:0] digit_1 = 8'b00000110; // 1
wire [7:0] digit_2 = 8'b01011011; // 2
wire [7:0] digit_3 = 8'b01001111; // 3
wire [7:0] digit_4 = 8'b01100110; // 4
wire [7:0] digit_5 = 8'b01101101; // 5
wire [7:0] digit_6 = 8'b01111101; // 6
wire [7:0] digit_7 = 8'b00000111; // 7
wire [7:0] digit_8 = 8'b01111111; // 8
wire [7:0] digit_9 = 8'b01101111; // 9
// 多路复用器,用于切换数码管显示的数字
reg [2:0] mux_sel = 3'b000; // 多路复用器选择信号
wire [7:0] mux_out; // 多路复用器输出信号
always @ (posedge clk) begin
// 如果启动信号为高电平,则开始循环显示
if (en) begin
// 如果下一个数的信号为高电平,则切换到下一个数码管显示的数字
if (next) begin
count <= count + 1;
end
// 延时计数器加1
delay_count <= delay_count + 1;
// 如果延时计数器达到特定值,则切换到下一个数码管
if (delay_count == 24'b111111111111111111111111) begin
count <= count + 1;
delay_count <= 24'b000000000000000000000000;
end
end
end
// 多路复用器的实现
always @ (count) begin
case (count)
4'b0000: mux_sel <= 3'b000; // 显示01234567
4'b0001: mux_sel <= 3'b001; // 显示12345678
4'b0010: mux_sel <= 3'b010; // 显示23456789
4'b0011: mux_sel <= 3'b001; // 显示12345678
default: mux_sel <= 3'b000; // 默认显示01234567
endcase
end
// 数码管输出信号的实现
always @ (mux_sel) begin
case (mux_sel)
3'b000: mux_out <= digit_0;
3'b001: mux_out <= digit_1;
3'b010: mux_out <= digit_2;
3'b011: mux_out <= digit_3;
3'b100: mux_out <= digit_4;
3'b101: mux_out <= digit_5;
3'b110: mux_out <= digit_6;
3'b111: mux_out <= digit_7;
default: mux_out <= digit_0;
endcase
end
// 数码管输出信号的赋值
assign a = mux_out;
endmodule
```
这个Verilog模块包括了时钟信号、启动或暂停信号、下一个数的信号和数码管输出信号等输入和输出信号。模块内部包括了计数器、延时计数器、多路复用器和数码管对应的8位数字等实现。
该模块会循环显示三组数字:01234567、12345678和23456789。当接收到下一个数的信号时,会切换到下一个数码管显示的数字。按下启动或暂停信号时,可以控制循环的开始和暂停。
阅读全文