用case语句实现8段数码管对应数字显示的控制,4bit的dig信号表示应显示的数字(0~9),8bit的seg信号表示数码管8段led的控制,且数码管为共阳数码管,[7:0]seg从高位到低位分别表示DP、A、B、C、D、E、F、G 本帖被以下淘专辑推荐:
|
|
相关推荐
6个回答
|
|
module seg8 (
input clk, clk; input [3:0] dig; output reg [7:0] seg ); always @ (posedge clk or negedge rst) begin if (!clk) dig <= 4'b0000; else begin case (dig) 4'b0000 : seg <= 8'b1000_0001; 4'b0001 : seg <= 8'b1100_1111; 4'b0010 : seg <= 8'b1001_0010; 4'b0011 : seg <= 8'b1000_0110; 4'b0100 : seg <= 8'b1100_1100; 4'b0101 : seg <= 8'b1010_0100; 4'b0110 : seg <= 8'b1010_0000; 4'b0111 : seg <= 8'b1000_1111; 4'b1000 : seg <= 8'b1000_0000; 4'b1001 : seg <= 8'b1000_0100; default : seg <= 8'b1111_1111; endcase end end endmodule |
|
|
|
|
|
|
|
解析:共阳数码管低电平点亮,参考case语法: 若 condition1 为真,则执行true_statement1;若condition1为假且condition2 为真,则执行 true_statement2;若所有列出的 condition 都为假,则执行 default_statement 语句 |
|
|
|
module seven_segment_controller(
input wire clk, input wire rst, input wire [3:0] dig, output reg [7:0] seg ); always @(posedge clk or posedge rst) begin if (rst) seg <= 8'b00000000; else begin case (dig) 4'b0000: seg = 8'b11111111; // 0 4'b0001: seg = 8'b11111010; // 1 4'b0010: seg = 8'b11110110; // 2 4'b0011: seg = 8'b11101110; // 3 4'b0100: seg = 8'b11011110; // 4 4'b0101: seg = 8'b10111110; // 5 4'b0110: seg = 8'b01111110; // 6 4'b0111: seg = 8'b00111110; // 7 4'b1000: seg = 8'b00001110; // 8 4'b1001: seg = 8'b00000110; // 9 default: seg = 8'b00000000; // turn off all segments endcase end end endmodule |
|
|
|
case (dig)
4'b0000 : seg <= 8'b1000_0001; 4'b0001 : seg <= 8'b1100_1111; 4'b0010 : seg <= 8'b1001_0010; 4'b0011 : seg <= 8'b1000_0110; 4'b0100 : seg <= 8'b1100_1100; 4'b0101 : seg <= 8'b1010_0100; 4'b0110 : seg <= 8'b1010_0000; 4'b0111 : seg <= 8'b1000_1111; 4'b1000 : seg <= 8'b1000_0000; 4'b1001 : seg <= 8'b1000_0100; default : seg <= 8'b1111_1111; endcase |
|
|
|
module seg_disp(
input [3:0] dig, output reg [7:0] seg ); always @(*) begin case(dig) 4'h0: seg = 8'b11111100; 4'h1: seg = 8'b01100000; 4'h2: seg = 8'b11011010; 4'h3: seg = 8'b11110010; 4'h4: seg = 8'b01100110; 4'h5: seg = 8'b10110110; 4'h6: seg = 8'b10111110; 4'h7: seg = 8'b11100000; 4'h8: seg = 8'b11111110; 4'h9: seg = 8'b11110110; default: seg = 8'b00000000; endcase end endmodule |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
有没有使用FPGA控制tdc-gpx2芯片LVDS输入输出功能的朋友?
FPGA在视频编码方面的应用有大佬做过吗?
Lattice MachXO3 Family默认IO上下拉配置
FPGA有哪些开发环境?可以用VSCode开发嘛?
为什么感觉FPGA那么香?
请问fpga与单片机最大的区别在哪里?
verilog HDL的testbench怎么编写?
使用FPGA搭建的电路,其工作频率如何设置
FPGA频率测量的方法有哪些?
为什么做一件事或者学习FPGA每隔一段时间就会感觉遇到瓶颈呢?
扫一扫,分享给好友
电子发烧友网
电子发烧友论坛
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191