基于EDA的8位数码管显示

  • 格式:doc
  • 大小:1.08 MB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河南科技

8位数码管显示电路设计

2012——20113学年第五学期

EDA技术课程考试

专业班级:电气106

姓名:耀

学号:

考核老师:

1 引言

EDA技术是当前数字系统设计领域比较火热的一种工具,他可以大大缩短设计需要的时间,降低成本的同时也提高了系统的稳定性。使用VHDL语言描述硬件系统使得EDA技术有了更为广阔的空间。本设计使用了基于Altera公司的开发软件工具Quartus II,使用Verilog HDL语言设计了一款很实用的八位共阴数码管显示驱动电路,由Quartus II生成的RTL图如下:

2.1 设计思路

设计总框图如下:

2.2 总体原理图

图1 总体原理图

2.3 总体功能介绍

由总体原理图可知,原理图中共有五个输入和两个输出。CLK为时钟输入端,DATA为预显示数据的加载端,在实际应用中可用通信总线代替27位并行总线输入数据,将并口改为串口来简化电路。LOAD为数据加载端DATA的使能端。D为移位寄存器的数据加载端,MD 为数据加载端D的使能端。输出端口LED为数码管显示数据输出端,端口K为数码管位选数据输出端。

总体功能介绍:由CLK输入时钟控制信号,DATA加载待显示的数据。先将LOAD置0,使加载端DATA的数据被存入内部寄存器。然后,随着时钟信号的输出,转制电路将内部寄存器中的数据按十进制,依次在输出端口DOUT输出低位到高位。输出端口COUT为8位移位寄存器的时钟控制端,当寄存器DOUT中被存入数据时,COUT端被置1,使的移位寄存器的时钟输入信号变的有效。D为移位寄存器的数据加载端,在D端输入FE,通过移位寄存器控制共阴数码管的位选。MD为数据加载端D的使能端,先将MD置1,使D端口的数据存入移位寄存器中,在数据存入后,将MD置0阻止D端口的数据存入。输出端口K接数码管的位选端1~8,以控制数码管的动态显示。

3 各个模块的实现

3.1二进制转十进制

二进制转十进制是通过将待显示的数据用内部的寄存器存储,然后对其除以10取整数部分和对其除以10取余数来实现二进制转十进制。在这以27位的并行总线来传入数据,在实际电路中,可选用一种总线协议来代替27位的并行总线,将并口改为串口。如:在单片机中用此电路时,可用IIC总线代替并口,实现并口转串口传输数据。

图2 进制转换电路

功能介绍:包括三个输入CLK、 DATA、LOAD和两个输出COUT、 DOUT。由CLK输入一个时钟脉冲,DATA为待输入显示的数据的加载端,LOAD为待加载输入数据的控制端。当时LOAD=0时,在时钟信号的上升沿将端口DATA的数据载入内部寄存器Q1。输出端口COUT为移位寄存器shft2的时钟控制端,通过与时钟信号的与作为移位寄存器的时钟。输出端口DOUT是将输入的数据按十进制取出的各位的输出端,将其与数码管显示电路输入端口A连结。

3.2数码管显示

这里的数码管使用的是八位一体共阴数码管显示。

图3 数码管显示电路

功能介绍:端口A为显示数据输入端,内部电路将要显示的0~9的二进制数据转换成

可有共阴数码管显示的十六进制数。输出端口LED,为8位并行输出。在实际应用时由高位到底位直接接数码管的端口a,b,c,d,e,f,g,dp。八位一体共阴数码管的位选端口1~8接移位寄存器shft2的八位并行输出端口K。通过移位寄存器输出数据随输入时钟信号的移位,来实现数码管的动态显示。

3.3 8位移位寄存器

图4 8移位寄存器电路

功能介绍:移位寄存器包括三个输入CLK、D、MD和一个输出K。移位寄存器的时钟信号CLK由转制电路上总的时钟信号CLK和其输出端口COUT的与来控制,使的转制电路中LOAD=1时,端口DATA输入的数据不被加载,此时输出端口COUT被置一,使得总的时钟信号CLK在移位寄存器的信号输入端有效。输入端D为数据加载端,在端口D输入FE后存入内部寄存器REG中,通过移位寄存器对其随时钟信号移位来控制共阴数码管的动态显示。输入MD为加载数据控制端。

4 波形仿真

在Quartus II软件输入上述代码,再通过编译和时序仿真,可得到如图5的仿真波形。时钟端CLK输入时钟信号,8位移位的数据加载端D输入FE,如图5,移位寄存器的数据输入使能端MD在前两个时钟信号时置1,使D端的输入数据有效。在二进制转十进制的电路输入端输入最大的8位十进制数99999999,显示数据加载使能端LOAD在第一个时钟信号时置0,使输入的显示数据有效,在第一个时钟信号后使能端LOAD置1,阻止显示数据的加载。共阴八位一体数码管的位选输出端K的输出如图5所示,这里以二进制比较直观的显示了移位寄存器内部数据的移动。在第二个时钟信号的输入后,数据被加载入移位寄存器,以后在每一时钟信号的上升沿,移位寄存器的输出数据被移位。共阴数码管的显示字符对应如下表:

0 1 2 3 4 5 6 7 8 9

3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 如图5所示,输出端LED在每个时钟信号下对应显示一个9(6F),在图5中以16进制比较直观显示。

图5 顶层文件仿真图

附录二进制转十进制:

module

CNT10(CLK,COUT,DOUT,DA TA,LOAD);

input CLK,LOAD;

input [26:0]DA TA;

output [3:0]DOUT;

output COUT;

reg [3:0]i=1;

reg COUT=0;reg [26:0]Q1;

reg [3:0]DOUT;

always @(posedge CLK )

begin if(!LOAD) Q1=DATA;

else

begin

case(i)

1:begin DOUT<=Q1%10;i=i+1;end 2:begin DOUT<=Q1%10;i=i+1;end 3:begin DOUT<=Q1%10;i=i+1;end 4:begin DOUT<=Q1%10;i=i+1;end 5:begin DOUT<=Q1%10;i=i+1;end 6:begin DOUT<=Q1%10;i=i+1;end 7:begin DOUT<=Q1%10;i=i+1;end 8:begin DOUT<=Q1%10;i=i+1;end default:begin DOUT<=0;end

endcase

Q1=Q1/10;

COUT=1;

end

end

endmodule

8位移位寄存器:

module shft2(CLK,D,MD,K);

output [7:0]K;

input CLK,MD;

input [7:0]D;

reg [7:0] REG;

always @(posedge CLK)

case(MD)

0:begin

REG[7:1]<=REG[6:0];REG[0]<=REG[7];

end

1:begin

REG<=D;

end

default:begin REG<=REG;end endcase

assign K=REG;

endmodule 共阴数码管显示:

module DECL7S (A,LED7S); input [3:0]A;

output [7:0] LED7S;

reg [7:0] LED7S;

always @(A)

begin

case(A)

0:LED7S=8'b00111111;

1:LED7S=8'b00000110;

2:LED7S=8'b01011011;

3:LED7S=8'b01001111;

4:LED7S=8'b01100110;

5:LED7S=8'b01101101;

6:LED7S=8'b01111101;

7:LED7S=8'b00000111;

8:LED7S=8'b01111111;

9:LED7S=8'b01101111;

default:LED7S=8'b00111111;

endcase

end

endmodule