用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 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
本人研一,做DFB激光稳频,目前只差FPGA ADC DAC做一个反馈系统
fpga工程师有吗?
xilinx FPGA+Sony LVDS接口图像传感器,已设计出网口输出,现想设计USB3.0输出,有没有什么解决方案?
采集卡采集视频数据通过cameralink传输到显示屏上,图像却分块,各位大佬们遇到过吗?谢谢!
国产FPGA的优势是什么?
PGL50H在软核移植的时候出现的报错,请问如何解决
想学国产fpga,有推荐的吗?
国产FPGA有哪些
Atmega328P单片机的引导程序
紫光同创在arm移植的时候报错DQS,该如何解决
扫一扫,分享给好友
电子发烧友网
电子发烧友论坛
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号