EDA课程设计报告

  • 格式:doc
  • 大小:712.00 KB
  • 文档页数:16

前言伴随着科技时代的步伐,现代电子产品正在以前所未有的革新速度,向着功能多样化、体积最小化、功耗最低化的方向迅速发展。

以大规模可编程逻辑器件为基础,并且广泛运用现代化计算机技术的一门最新技术——EDA,应运而生。

他的诞生,大大提高了电子设计自动化的程度,并且缩短了产品开发的周期,提高了产品的竞争力,进而引发了现代电子产品设计领域里的一场革命。

他的应用前景更是让人喜出望外。

首先,EDA技术,将广泛应用于高校电类专业的实践教学工作中。

对于电子技术课程设计,特别是数字系统性的课题,在EDA实验室不许添加任何心的东西,即可设计出各种比较复杂的数字系统,并且借助于实验开发系统可以方便地进行硬件验证,如设计频率计、交通控制灯、秒表等。

其次,EDA技术也将在科研工作和新产品的开发中应用。

由于可编程逻辑器件性能价格比的不断提高,开发软件功能的不断完善,EDA技术具有软件的方式设计硬件,可用有关软件进行各种仿真,系统可现场编程、在线升级,整个系统可集成在一个芯片上等特点,这将使其广泛应用于科研工作和新产品的开发工作中。

再次,EDA技术也将在专用集成电路的开发另约发挥举足轻重的作用。

可编程期间制作厂家可按照一定的规格以通用器件形式大量生产,用户可按通用器件从市场上选购,然后按自己的要求通过编程实现专用集成电路的功能。

因此,对于集成电路制造技术与世界先进的集成电路制造技术尚有一定产距的我国,开发具有自主知识产权的专用集成电路,已成为相关专业人员的重要任务。

最后,EDA技术也将为传统几点设备的升级换代和技术改造带来全新的空气。

利用EDA技术进行传统机电设备的电气控制系统的重新设计或技术改造,可以大大缩短周期,降低设计成本,并且能够提高产品或设备的性能,缩小产品体积,提高产品的技术含量。

提高产品的附加值。

1. 课程设计目的(1)学习使用EDA集成设计软件MAxplusⅡ,了解电路描述、综合、模拟过程。

(2)学习VHDL程序中数据对象、数据类型、顺序语句、并行语句的综合使用,了解VHDL程序的基本结构。

(3)掌握使用EDA工具设计数字系统的设计思路和设计方法。

学习VHDL 基本逻辑电路的综合设计应用。

2.课程设计题目描述和要求2.1 设计要求(1) 根据设计题目要求完成设计输入、综合、模拟仿真验证及显示。

(2) 提供设计报告,报告要求包括以下内容:设计思路、设计输入文件、设计与调试过程、模拟仿真结果和设计结论2.2设计内容:8位频率计的设计(1)可测量从10Hz到9999 9999Hz的信号频率8位频率计;(2)输入端分别为:基准时钟(CLK)和被测信号输入(Fx);输出端为(DOUT),皆采用BCD码计数方式;(3)将被测信号的频率直接送到8个LED显示。

(4)拟采用的芯片的型号可为EPF1K30TC144-1进行硬件验证。

2.3 设计思路图2-1是8位十进制数字频率计的电路逻辑图,它由一个测频控制信号发生器TESTCTL、八个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B 组成。

以下分别叙述频率计各逻辑模块的功能与设计方法。

图2-1 数字频率计的电路逻辑图3课程设计报告内容3.1十进制计数器CNT10的设计计数器是在数字系统中使用最多的时序电路,它不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。

工作原理:10计数器的工作原理是当清零信号为高时(即CLR=1)计数器清零,CARRY-OUT 、CQ输出都为零。

当CLR=0,并且CLK与ENA同时为1,此时计数器开始计数,CQ送出实际计数值,而CARRY-OUT只在计数计满情况下输出为1,此时计数器清零重新开始计数。

十进制计数器源程序CNT10.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CNT10 ISPORT(CLK:IN STD_LOGIC;CLR:IN STD_LOGIC;ENA:IN STD_LOGIC;CQ: OUT INTEGER RANGE 0 TO 15;CARRY_OUT: OUT STD_LOGIC );END ENTITY CNT10;ARCHITECTURE ART OF CNT10 ISSIGNAL CQI:INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK,CLK,ENA)ISBEGINIF CLR='1'THEN CQI<=0;ELSIF CLK'EVENT AND CLK='1'THENIF ENA='1'THENIF CQI<9 THEN CQI<=CQI+1;ELSE CQI<=0;END IF;END IF; END IF;END PROCESS;PROCESS (CQI)ISBEGINIF CQI=9 THEN CARRY_OUT<='1';ELSE CARRY_OUT<='0';END IF;END PROCESS;CQ<=CQI;END ARCHITECTURE ART;仿真波形结果与原理图如图3-1图3-2所示:从系统仿真波形来看,本系统完全满足设计要求。

图3-1 10进制计数器波形仿真图3-2十进制计数器的元件符号3.2寄存器REG32设计设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

若已有32位BCD码存在于此模块的输入口,在信号LOAD的上升沿后即被锁存到寄存器REG32B的内部,并由REG32B的输出端输出,然后得实验板上的7段译码器译成能在数码管上显示的相对应的数值32锁存器的源程序REG32.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B ISPORT(LOAD:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END ENTITY REG32B;ARCHITECTURE ART OF REG32B ISBEGINPROCESS (LOAD,DIN)ISBEGINIF LOAD'EVENT AND LOAD='1'THEN DOUT<=DIN;END IF; END PROCESS;END ARCHITECTURE ART;图3-3锁存器的波形仿真图图3-4 32位锁存器的元件符号图3.3 测频控制信号发生器设计频率测量各基本原理是计算每秒钟内待测信号的脉冲数。

这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。

当TSTEN高电平时,允许计数;低电平时,停止计数,并保持其所计的数。

在停止计数期间,首先需要一个所存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B中,并由外部的7段译码器译出并稳定显示。

锁存信号之后,必须有一清零信号CLR_CNT对计数器进行清零,为下1秒钟的计数操作做准备。

测频控制信号发生器的工作时序rutu6.6所示。

为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时其值翻转。

其中,控制信号时钟CLK的频率取1Hz,而信号TSTEN的脉宽恰好为1s,可以用作闸门信号。

此时,根据测频的时序要求,可得出信号LOAD和CLR_CNT 的逻辑描述。

由图3-5可见,在计数完成后,即计数使能信号TSTEN在1s的高电平后,利用其反相值的上跳沿产生一个锁存信号LOAD,0.5后,CLR_CNT 产生一个清零信号上跳沿。

高质量的测频控制信号发生器的设计十分重要,设计中要对其进行仔细的实时仿真(TIMING SIMULATION),防止可能产生的毛刺。

测频控制信号发生器的源程序TESTCTL.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL ISPORT(CLK: IN STD_LOGIC;TESTEN: OUT STD_LOGIC;CLR_CNT:OUT STD_LOGIC;LOAD: OUT STD_LOGIC);END ENTITY TESTCTL;ARCHITECTURE ART OF TESTCTL ISSIGNAL DIV2CLK:STD_LOGIC;BEGINPROCESS(CLK)ISBEGINIF CLK'EVENT AND CLK='1'THENDIV2CLK<=NOT DIV2CLK;END IF;END PROCESS;PROCESS (CLK,DIV2CLK)ISBEGINIF CLK='0'AND DIV2CLK='0'THENCLR_CNT<='1';ELSE CLR_CNT<='0';END IF;END PROCESS;LOAD <=NOT DIV2CLK;TESTEN<=DIV2CLK;END ARCHITECTURE ART;其波形仿真图及其元件符号图如同3-5、3-6图所示图3-5测频控制器的波形仿真图图3-6测频控制器的元件符号图3.4频率显示模块频率显示模块是为了让8个七段数码管能正确的显示出锁存器中所存入的数据而设计的。

因为每个计数器所测量的为4位二进制码,要想在七段数码管上正确的显示出对应的十进制数,就要求正确的译码,所以该模块中应含有译码器YM7_LED。

该模块采用动态扫描显示的方法设计。

所谓动态显示,就是要定时的对显示器件扫描,显示器分时工作,每次只能有一个器件显示。

但由于人的视觉暂留现象,所以,感觉到所有的器件在“同时”的显示。

这就要求该模块中有8选1的多路开关MUX_8x4和0-7的扫描计数器CNT7。

频率显示单元模块的源程序DISPLAY.VHD:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DISPLAY ISPORT(IN7,IN6,IN5,IN4,IN3,IN2,IN1,IN0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);CLK:IN STD_LOGIC);END DISPLAY;ARCHITECTURE ONE OF DISPLAY ISSIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL HALF:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS (CLK)BEGINIF (CLK'EVENT AND CLK='1')THENIF (CNT="111") THENCNT<="000";ELSE CNT<=CNT+1;END IF;END IF;SEL<=CNT;END PROCESS;PROCESS (CNT)BEGINCASE CNT ISWHEN "000"=>HALF<=IN0;WHEN "001"=>HALF<=IN1;WHEN "010"=>HALF<=IN2;WHEN "011"=>HALF<=IN3;WHEN "100"=>HALF<=IN4;WHEN "101"=>HALF<=IN5;WHEN "110"=>HALF<=IN6;WHEN "111"=>HALF<=IN7;WHEN OTHERS=>HALF<="XXXX";END CASE;CASE HALF ISWHEN "0000"=>LED7<="0111111";WHEN "0001"=>LED7<="0000110";WHEN "0010"=>LED7<="1011011";WHEN "0011"=>LED7<="1001111";WHEN "0100"=>LED7<="1100110";WHEN "0101"=>LED7<="1101101";WHEN "0110"=>LED7<="1111101";WHEN "0111"=>LED7<="0000111";WHEN "1000"=>LED7<="1111111";WHEN "1001"=>LED7<="1101111";WHEN OTHERS=>LED7<="0000000";----" " END CASE;END PROCESS;END ONE;其波形仿真图七段数码管示意图如图3-15所示。