八位数码显示HDL语言正文.docx
《八位数码显示HDL语言正文.docx》由会员分享,可在线阅读,更多相关《八位数码显示HDL语言正文.docx(9页珍藏版)》请在冰豆网上搜索。
![八位数码显示HDL语言正文.docx](https://file1.bdocx.com/fileroot1/2023-4/20/f03d008a-0921-447d-a831-ee02e9330e14/f03d008a-0921-447d-a831-ee02e9330e141.gif)
八位数码显示HDL语言正文
摘要:
本文用三位二进制数来控制8个数码管的选通与否,二进制转十进制译码器将译码后的数据送去经数码管的选通控制的数码管进行显示,实现8位数码管数字的显示。
关键字:
8位数码管显示;译码器;
1引言
21世纪是一个电子技术和电子元件有更大发展的世纪。
回顾百年来电子技术和电子工业发展的成就,举世瞩目。
由于个人能力有限。
在经过多书本的研究,和在网上资料的查询,这次EDA课程设计我选择了8位数码管显示的设计。
数码管显示现在广泛的应用到现实生活中,因此学会这样的设计尤为重要。
2总体设计方案
2.1设计思路
本文的数码管显示采用时钟控制寄存器中的值来控制8个数码管的选通与否,同时也控制所要显示数码管所要显示数字的段码,然后经由二进制转十进制译码器译码后,将译码器得到的数据送到数码管显示电路进行显示,然后经动态显示后,实现8位数码管中显示所要显示的8位数据。
2.2总体设计框图
总体设计的框图如图一
开始
CLK时钟
数码管段控
数码管选通
译码器
八位数码管
图一
3方案论证
3.1系统方案论证
如下图二所示的是8位数码扫描显示电路,其中每个数码管的8个段:
h,g,f,e,d,c,b,a(h是小数点)都分别连在一起,8个数码管分别由8个选通信号k1,k2,k3,k4,k5,k6,k7,k8来选择。
被选通的数码管显示数据,其余关闭。
如在某一时刻,k3为高电平,其余选通信号为低电平,这是仅k3对应的数码管显示来自段信号端的数据,其余7个数码管呈现关闭状态。
根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1,k2,k3,k4,k5,k6,k7,k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
图二
3.2系统控制信号
本系统选用的控制输入输出信号;输入信号:
时钟信号CLK。
输出信号:
段控显示控制信号dk[7:
0];数码管地址控制信号pk[2:
0];数码管显示数字显示xs。
4模块电路实施
4.1quartusⅡ软件
quartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
(1)可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;
(2)芯片(电路)平面布局连线编辑;
(3)LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;
(4)功能强大的逻辑综合工具;
(5)完备的电路功能仿真与时序逻辑仿真工具;
(6)定时/时序分析与关键路径延时分析;
(7)可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;
(8)支持软件源文件的添加和创建,并将它们链接起来生成编程文件;
(9)使用组合编译方式可一次完成整体设计流程;
(10)自动定位编译错误;
(11)高效的期间编程与验证工具;
(12)可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;
(13)能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
4.2数码管的选通与段控
8位数码管的显示需要数码管选通信号以及数码管段控的信号,采用共七段阴极数码管,数码管选通信号的选通控制8位数码管的选通位,数码管段控的信号的二进制段码来控制所要显示的数字,随着每一个选通的地址,而发送不同的段码,最终8位数码显示电路数据从而实现数码管的动态扫描显示。
,从而实现八位数字的显示。
本功能模块的电路如图三
图三
实现模块的框图如图四
图四
仿真实现如图五
图五
4.3译码器
译码器译码是将段控信号中的二进制数值经由译码器译成十进制数值,在此过程中有段控信号的读取、二进制十进制之间的转换、输出三个步骤,从而实现译码器译码的功能,所设计的框图如图六所示
图六
仿真实现如图七
图七
5总体方案的实施
数码管的选通信号接8个数码管的选通地址线,而经过译码器译码之后的数字显示接8个数码管的段控地址线,两个模块的控制实现数码管的显示设计,总体框图如图八
图八
仿真波形如图九
图九
6总结与体会
经过了这次EDA设计,我对VHDL语言有了更深刻的理解。
学会了层次设计概念,将程序分为若干模块,分别完成各个模块,最后再将各个模块连接起来。
同时也是一次把原来所学的书本知识和实践相联系的过程。
并通过实践,建立起了学习EDA的浓厚兴趣,基本掌握了这个软件的使用方法,并顺利的对程序进行编辑及仿真。
为实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。
对软件编程、排错调试。
掌握了关于EDA技术及VHDL语言的基本编程形式及原理图的绘制,为今后的学习打好基础。
我还意识到了我对这门课掌握还有一定的不足,还有许多的知识我不了解;有的是一知半解;有的即使原理懂了,但在应用方面却是丝毫不知。
而且,这次学习我得到了同学的很大帮助,从开始的毫无头绪,到现在的设计结果,虽然依然很不好,但是很感谢这次机会。
所以在今后的学习中,我会更加努力,不仅要学好理论知识,还要把它应用到实践中去,使两者很好的结合起来,互补互助。
7参考文献
[1]潘松.黄继业.潘明EDA技术实用教程—VHDL版(第四版).科学出版社.2011
[2]庄严.EDA技术与数字系统设计.北京:
电子工业出版社.2009
[3]康华光电子技术基础(模拟部分)第五版[M].高等教育出版社,2005
[4]康华光电子技术基础(数字部分)第五版[M].高等教育出版社,2005
8附录
modulesmxs(xs,pk,dk,clk);
inputclk;
outputxs;
reg[7:
0]dk,scan,xs;
outputreg[2:
0]pk;
output[7:
0]dk;
reg[3:
0]data;
always@(posedgeclk)
begin
pk<=pk+1;
end
always
begin
case(pk[2:
0])
3'b000:
beginscan<='b10000000;data[3:
0]<=4'b1001;end
3'b001:
beginscan<='b01000000;data[3:
0]<=4'b0001;end
3'b010:
beginscan<='b00100000;data[3:
0]<=4'b1001;end
3'b011:
beginscan<='b00010000;data[3:
0]<=4'b0011;end
3'b100:
beginscan<='b00001000;data[3:
0]<=4'b0100;end
3'b101:
beginscan<='b00000100;data[3:
0]<=4'b1001;end
3'b110:
beginscan<='b00000010;data[3:
0]<=4'b1000;end
3'b111:
beginscan<='b00000001;data[3:
0]<=4'b0000;end
default:
beginscan<='bx;data[3:
0]<='bx;end
endcase
case(data[3:
0])
4'b0000:
dk[7:
0]<=8'b00111111;
4'b0001:
dk[7:
0]<=8'b00000110;
4'b0010:
dk[7:
0]<=8'b01011011;
4'b0011:
dk[7:
0]<=8'b01001111;
4'b0100:
dk[7:
0]<=8'b01100110;
4'b0101:
dk[7:
0]<=8'b01101101;
4'b0110:
dk[7:
0]<=8'b01111101;
4'b0111:
dk[7:
0]<=8'b00000111;
4'b1000:
dk[7:
0]<=8'b01111111;
4'b1001:
dk[7:
0]<=8'b01101111;
default:
dk[7:
0]<='bx;
endcase
case(dk[7:
0])
8'b00111111:
xs<=0;
8'b00000110:
xs<=1;
8'b01011011:
xs<=2;
8'b01001111:
xs<=3;
8'b01100110:
xs<=4;
8'b01101101:
xs<=5;
8'b01111101:
xs<=6;
8'b00000111:
xs<=7;
8'b01111111:
xs<=8;
8'b01101111:
xs<=9;
endcase
end
endmodule