3.1.2 设计内容
格雷码转换器设计时,定义输入g为4位标准逻辑矢量位
STD_LOGIC_VECTOR,输出的信号4个信号的数据类型在模式五、模式六下分别为4位和7位标准逻辑矢量位STD_LOGIC_VECTOR。使用LIBRATY语句和USE语句,来打开IEEE库的程序包STD_LOGIC_1164.ALL。当输入信号时,程序按照输入的指令来选择格雷码的输出,并最终通过译码器在数码管上显示出来。
增加设计部分:考虑到易操作及应用广的因素,在原设计要求的基础上增设十进制输入,并将输入范围改为[0,15]。 3.2波形仿真及分析;
格雷码(Gray code),又叫循环二进制码或反射二进制码,在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式。 一个二进制码转换成格雷码的方法是,从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变。那么我们如何实现一个4位二进制码到格雷码转换器的设计呢? 假设这4位二进制码为D3D2D1D0,输出格雷码为G3G2G1G0,则我们可以得到G0?D1'D0?D1D0',G1?D2'D1?D2D1',G2?D3'D2?D3D2',G3?D3。表格如表1。 4位二进制码 0000 0001 0010 0011 0100 0101 格雷码 0000 0001 0011 0010 0110 0111 3
0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000 表1 二进制与格雷码转换表
我们用modelsim软件进行仿真,仿真程序见附录一。下面是modelsim软件仿真波形。
图2 格雷码转换仿真图
4
4.硬件测试
经过modelsim软件的仿真成功后,接下来我们就在试验箱上做硬件测试,这需要用到另一个软件quartus II.通过quartusII软件,建立工程,进行编译,引脚设定进行硬件测试,得到电路图图一,我们选择的芯片是GW2C35 EP2C35FBGA484C8 CycloneII.主要目的是用4个按键来控制4个七段数码管,4个按键表示的是4位二进制,4个七段数码管则显示的经过输入转换后的格雷码,所以这需要严格控制好各引脚的链接,其引脚设定如图4。
图3 整体电路图
5
图4 引脚图
通过quartusII,软件把程序烧入试验箱中,便可通过按键输入得到输出结果,便可进行验证。我们选定键8、键7、键6、键5作为输入控制键。与其相对应的七段数码管作为输出显示。根据表1,逐一比对,测试结果与理论、仿真一致。部分结果附录二。
6
5. 实验困难问题及解决方法
编写的程序会有各种不完善,所以运用modelsim软件进行仿真,因此必须编写testbench的程序,从而进行仿真,不断地根据错误提示进行修改,通过查资料,发现问题,并改写,最后仿真成功。
硬件测试时,烧入程序时,PC未能及时识别USB外接设备,听过重新启动试验箱,重新插入USB线,解决这一问题。
6.课程设计总结
在这次设计过程中,我遇到很多问题,开始的时候,制定的方案有错误,花费了一天半的时间,虽然能够使各个模块单独仿真成功,但是综合到一块就会出错,经过和同学商量,最终重新制定方案,又经过两天半的编程最终达到了预期的结果。
在此过程中让我学到了一些知识:1、正确而有效的方案是成功的一半,只有正确的方案才能高效的完成任务。2、细节很重要,基本功必须要扎实,因为在编程中遇到了很多细节问题,只有基本功扎实才能减少出错的几率。3、对eda知识又有了更进一步的提高,特别是模块化思想和buffer信号的应用,都让我在此次设计过程中学会了,并能够熟练的应用。
7.参考文献
[1] 林明权.VHDL数字控制系统设计范例[M]. 北京:电子工业出版社.2003 [2] 雷伏容.VHDL电路设计[M]. 北京:清华大学出版社.2006 [3] 陈荣,陈华.VHDL芯片设计[M]. 北京:机械工业出版社.2006
[4] 杨恒,李爱国等. FPGA/CPLD最新实用技术指南[M]. 北京:清华大学出版社. 2005
[5] 孙研鹏,张芝贤等.VHDL与可编程逻辑器件应用[M]. 北京:航空工业出版社. 2006
[6] 辛春艳.VHDL硬件描述语言[M]. 北京:国防工业出版社.2002 [7] 曾繁泰,陈美金.VHDL程序设计[M]. 北京:清华大学出版社. 2000 [8] 阎石.数字电子技术[M]. 北京:高等教育出版社. 2006
[9] Bob Zeidman, 基于FPGA&CPLD的数字IC设计方法 [M]. 赵宏图译,北京:北京航空航天大学出版社.2004
7