verilog数码管显示 请问一下verilog怎样写数码管显示?
来源:大业商务网
|
发布时间:2019-06-25 18:10:44
1, 请问一下verilog怎样写数码管显示?

分出两个输出端口,一个控制段码一个是位码控制,下面是个完整程序//数码管恒定显示0到7module seg2(clk,rst,dataout,en);input clk,rst;output wire [7:0] dataout;output wire [7:0] en;reg [15:0] cnt_scan;reg [3:0] data4;reg [7:0] dataout_xhdl1;reg [7:0] en_xhdl;assign dataout=dataout_xhdl1;assign en=en_xhdl;always@(posedge clk or negedge rst)beginif(rst==0)cnt_scanelsecnt_scancase(cnt_scan[15:13]) //数码管使能端0:en_xhdl1:en_xhdl2:en_xhdl3:en_xhdl4:en_xhdl5:en_xhdl6:en_xhdl7:en_xhdldefault:en_xhdlendcasecase(en_xhdl) //数码管对应到数字8"b11111110:data48"b11111101:data48"b11111011:data48"b11110111:data48"b11101111:data48"b11011111:data48"b10111111:data48"b01111111:data4default:data4endcasecase(data4) //数码管显示数字4"b0000:dataout_xhdl14"b0001:dataout_xhdl14"b0010:dataout_xhdl14"b0011:dataout_xhdl14"b0100:dataout_xhdl14"b0101:dataout_xhdl14"b0110:dataout_xhdl14"b0111:dataout_xhdl14"b1000:dataout_xhdl14"b1001:dataout_xhdl14"b1010:dataout_xhdl14"b1011:dataout_xhdl14"b1100:dataout_xhdl14"b1101:dataout_xhdl14"b1110:dataout_xhdl14"b1111:dataout_xhdl1default:dataout_xhdl1endcaseendendmodule
2, verilog中有关显示数码管的问题,很简单~

就那那种丑丑的七个HEX display来说吧,你给他一个七位长的二级制,七位对应display上的七格,0就是亮,1就是不亮。(有的是反过来的)拉倒下面看那个表啦表里的abcdefg对应的是七个segmentcode如下module SevenSegmentDisplayDecoder(ssOut, nIn);output reg [6:0] ssOut;input [3:0] nIn;// ssOut format {g, f, e, d, c, b, a}always @(nIn)case (nIn)4"h0: ssOut = 7"b0111111;4"h1: ssOut = 7"b0000110;4"h2: ssOut = 7"b1011011;4"h3: ssOut = 7"b1001111;4"h4: ssOut = 7"b1100110;4"h5: ssOut = 7"b1101101;4"h6: ssOut = 7"b1111101;4"h7: ssOut = 7"b0000111;4"h8: ssOut = 7"b1111111;4"h9: ssOut = 7"b1100111;4"hA: ssOut = 7"b1110111;4"hB: ssOut = 7"b1111100;4"hC: ssOut = 7"b0111001;4"hD: ssOut = 7"b1011110;4"hE: ssOut = 7"b1111001;4"hF: ssOut = 7"b1110001;default: ssOut = 7"b1001001;endcaseendmodule
3, verilog数码管静态显示。。。。。。可以按照这程序给我说说它的运行...

首先,译码的这段应该能看懂吧?有注释的,输出信号的不同的值,会使得数码管显示出不同的内容,就是注释说的 0-9 a-f。4"h0 : sm_seg = 8"hc0; //显示"0"4"h1 : sm_seg = 8"hf9; //显示"1"4"h2 : sm_seg = 8"ha4; //显示"2"4"h3 : sm_seg = 8"hb0; //显示"3"4"h4 : sm_seg = 8"h99; //显示"4"4"h5 : sm_seg = 8"h92; //显示"5"4"h6 : sm_seg = 8"h82; //显示"6"4"h7 : sm_seg = 8"hf8; //显示"7"4"h8 : sm_seg = 8"h80; //显示"8"4"h9 : sm_seg = 8"h90; //显示"9"4"ha : sm_seg = 8"h88; //显示"a"4"hb : sm_seg = 8"h83; //显示"b"4"hc : sm_seg = 8"hc6; //显示"c"4"hd : sm_seg = 8"ha1; //显示"d"4"he : sm_seg = 8"h86; //显示"e"4"hf : sm_seg = 8"h8e; //显示"f"那么输出 sm_seg 是怎么变化的呢? 它的变化取决于 disp_dat 的变化:case (disp_dat)那么再看disp_data是如何变化的呢?看下面的代码:always @ (posedge clk )begin count = count + 1"b1;sm_bit = 8"b00000000;endalways @ (count[24])begindisp_dat = {count[28:25]};end当时钟的每个上升沿到来的时候,计数器 count都会自动加1,如下:count: 0000...00 37个0,因为计数器是37位的,加1变成:count: 0000...01 继续加1count: 0000...10 继续count: 0000...11 一直累积到第24bit发生变化时,即第24位从0跳转到1,或是从1跳转到0,都会把计数器的第28:25位的值付给disp_dat。disp_dat的值的变化就会导致输出寄存器sm_seg的变化,导致数码管的显示内容发生变化。所以总的来说,就是数码管会从0-9 a-f的自动跳转显示,至于间隔时间多少,要看你的时间基数(就是时钟周期)多长,再来推算计数器技术翻转时间。
4, 最基本的 verilog 数码管显示程序,为啥不对啊

首先要检查引脚有没有锁定对,然后要知道数码管是是共阴极的还是共阳极的,然后看看位选是0有效还是1有效module clock(clk,dig,seg);input clk;output wire[7:0]dig;output wire[7:0]seg;assign dig=8"b0;assign seg=8"hf9;endmodule你后面发的那个程序计数器和d根本就没用,如果不确定位选是0有效还是1有效就把dig=8"h10;
相关概念
dig
dig DIG传媒集团 DIG(Data mining and Intelligent panoramic Media Group)——数据挖掘与全景智能传播媒体集团。
seg
飞碟之父--约翰瑟尔(JOHN SEARL)是SEG--瑟尔自然能的创始人。 SEG(Searl-EffectGenerator)是一部不需要能源的发电机,它可以收集能源,但不需要使用任何燃料。 SEG瑟尔自然能:永恒能源!宇宙资本!一次性能源终结者! 约翰瑟尔先生正推动人类从“电力文明”时代迈进到使用永恒清洁新能源的“磁力文明”与“光力文明”新时代!
免责声明
- •
- 本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。