Vivado 2018.3软件FPGA _Verilog HDL__Basys3四位数码管动态显示用数码管封装模块 、数码管设计模块 、顶层模块实现
时间: 2024-01-22 09:17:48 浏览: 95
以下是一个基于Verilog HDL的Basys3四位数码管动态显示设计的例子,包含数码管封装模块、数码管设计模块和顶层模块实现。
数码管封装模块:
```
module digit_display(
input clk,
input [3:0] digit,
output [6:0] seg
);
reg [6:0] seg_table [0:9] = {7'b1000000, 7'b1111001, 7'b0100100, 7'b0110000, 7'b0011001, 7'b0010010, 7'b0000010, 7'b1111000, 7'b0000000, 7'b0010000};
assign seg = seg_table[digit];
endmodule
```
数码管设计模块:
```
module digit_design(
input clk,
input [15:0] data_in,
output reg [3:0] digit,
output reg [6:0] seg
);
reg [15:0] cnt = 16'd0;
always @(posedge clk) begin
if(cnt == 16'd49999) begin
cnt <= 16'd0;
digit <= digit + 1;
end else begin
cnt <= cnt + 1;
end
end
digit_display display(clk, digit, seg);
always @(posedge clk) begin
case(digit)
4'd0: seg <= data_in[3:0];
4'd1: seg <= data_in[7:4];
4'd2: seg <= data_in[11:8];
4'd3: seg <= data_in[15:12];
default: seg <= 7'b1111111;
endcase
end
endmodule
```
顶层模块实现:
```
module top(
input clk,
input [15:0] data_in,
output [3:0] digit,
output [6:0] seg
);
digit_design design(clk, data_in, digit, seg);
endmodule
```
这个设计中包含了一个数码管封装模块,用于将输入的数码转换为七段数码管的控制信号;一个数码管设计模块,用于在四个数码管之间进行动态切换,并将输入数据转换为七段数码管的控制信号;以及一个顶层模块,将数码管设计模块和外部输入输出端口连接在一起。
在Vivado 2018.3软件中,可以将这些模块进行综合、实现和生成比特流,然后通过Basys3开发板进行验证。
阅读全文