广工 EDA课程设计.doc_第1页
广工 EDA课程设计.doc_第2页
广工 EDA课程设计.doc_第3页
广工 EDA课程设计.doc_第4页
广工 EDA课程设计.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 课程名称_VHDL与集成电路设计_题目名称_电子钟VHDL设计_学生学院_物理与光电工程学院_专业班级_ _学 号_学生姓名_ _指导教师_2014 年 12 月 19 日目录一、前言11.1 EDA技术简介11.2 EDA的发展前景1二、设计内容及要求12.1设计内容12.2 设计要求12.3 实验目的2三、设计原理及框图23.1设计原理23.2 设计框图2四、模块程序设计44.1 秒、分模块程序及仿真44.2 时模块程序及仿真64.3 消抖模块74.4 顶层文件设计8五、调试11六、心得总结12参考文献1211一、前言1.1 EDA技术简介电子系统设计自动化(EDA:ElectronicDesignAutomation)已成为不可逆转的潮流,它是包含CAD、CAE、CAM等与计算机辅助设计或设计自动化等相关技术的总称。随着信息时代的到来,信息电子产品已不断地向系统高度集成化和高度微型化发展,使得传统的手工设计和生产技术无法满足信息产品的社会和市场需要,因此,人们开始借助于EDA技术进行产品的设计和开发。目前EDA技术主要是以计算机软件工具形式表现出来的,对于现代复杂的电子产品设计和开发来说,一般需要考虑“自上而下”三个不同层次内容的设计(即:系统结构级设计,PCB板级设计和IC集成芯片级设计)。ProtelDXP软件系统是一套建立在IBM兼容PC环境下的CAD电路集成设计系统,它是世界上第一套EDA环境引入到Windows环境的EDA开发工具,具有高度的集成性和可扩展性。本设计就是利用ProtelDXP进行原理图设计、PCB布局布线、进行电路仿真测试。通过本设计充分了解到ProtelDXP的特点并且充分掌握了ProtelDXP的设计系统的基础知识。1.2 EDA的发展前景随着微电子技术和计算机技术的不断发展,在涉及通信、国防、航天、工业自动化、仪器仪表等领域工作中,EDA技术的含量以惊人的速度上升,从而使它成为当今电子技术发展的前言之一。由于在电子系统设计领域中的明显优势,基于大规模可编程器件解决方案的EDA技术及其应用在近年中有了巨大的发展,将电子发展技术再次推向了又一崭新的历史阶段。这些新的发展大致包含了这样6个方面:1.新器件;2.新工具软件;3.嵌入式系统设计;4.DSP系统设计;5.计算机处理器设计;6.与ASIC市场的竞争技术。二、设计内容及要求2.1设计内容设计一个电子钟,要求可以显示时、分、秒,用户可以设置时间。2.2 设计要求 设计思路清晰,整体设计给出框图,提供顶层电路图; 应用vhdl完成各次级模块设计,绘出具体设计程序; 完成设计仿真和程序下载; 写出实验报告2.3 实验目的 掌握多位计数器相连的设计方法。 掌握二十四进制,六十进制计数器的设计方法。 掌握VHDL技术的层次化设计方法。 了解软件的元件管理含义以及模块元件之间的连接概念。 掌握电子电路一般的设计方法,并了解电子产品的研制开发过程,基本掌握电子电路安装和调试的方法。 培养独立分析问题,解决问题的能力三、设计原理及框图3.1设计原理首先,电子钟的时钟信号的分、秒都是60进制的计数信号,小时则为24进制的计数信号。由此,可以设置3个模块,分别为秒模块、分钟模块和小时模块。首先开关打开后,给秒模块接一个1Hz的时钟信号,使秒模块开始对时钟的上升沿计数,每来一个时钟上升沿,秒模块加1。每当计满一个周期后,即60秒,会向分钟模块产生进位信号,同时向秒模块发出重置信号,使秒模块为00。然后重新对时钟上升沿计数,当秒模块显示为59之后,下一个时钟上升沿到来时又向分模块产生进位信号,秒模块重新被置为00,如此循环。分钟模块对秒模块的进位信号进行计数。来一个秒进位,分模块加1。当分钟模块计满一个周期后,即60分钟,同样向小时模块产生进位信号并向本模块发出重置信号,使分钟模块为00。然后重新对秒模块的进位信号进行计数,当分模块显示为59时,下一个秒模块进位信号到来时,分模块又向小时模块产生进位信号,分模块重新被置为00,如此循环。小时模块对分钟模块进位信号的数目进行计数,来一个进位信号,小时模块加1。当大于23后,小时模块向本模块发出重置信号,使小时模块显示为00,开始新一轮的计数。以此来实现24小时的计时功能。复位功能的设计,可以用控制信号控制各个模块的重置功能即可实现。3.2 设计框图 系统顶层框图,如下图1计数器时钟信号复位控制调分按键消抖按键消抖调时数码管显示1Hz图1 系统顶层框图 电子钟结构框图,如下图2时十位时个位分十位分个位秒十位秒个位译码器译码器译码器译码器译码器译码器时计数器分计数器秒计数器按键消抖按键消抖时钟信号复位控制小时调节分钟调节1Hz1MHz进位信号进位信号图2 数字钟结构框图四、模块程序设计4.1 秒、分模块程序及仿真 秒和分计数模块是60进制计数器,计数到59后,下一个计数脉冲到来时清零,并向高位发出进位信号,然后重新从00开始计数。VHDL的RTL描述如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt_sm IS PORT(CLK,CLR:IN STD_LOGIC; OUT_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); OUT_L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); C:OUT STD_LOGIC);END cnt_sm;ARCHITECTURE behav OF cnt_sm ISSIGNAL S_H:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL S_L:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK,CLR) BEGIN IF CLK EVENT AND CLK=1 THEN IF S_L(3 DOWNTO 0)1001 THEN S_L(3 DOWNTO 0)=S_L(3 DOWNTO 0)+1; C=0; ELSIF S_H(3 DOWNTO 0)0101 THEN S_L(3 DOWNTO 0)=0000; S_H(3 DOWNTO 0)=S_H(3 DOWNTO 0)+1; C=0; ELSE S_L(3 DOWNTO 0)=0000; S_H(3 DOWNTO 0)=0000; C=1; END IF; END IF; IF CLR=1 THEN S_L(3 DOWNTO 0)=0000; S_H(3 DOWNTO 0)=0000; END IF; OUT_H=S_H; OUT_L=S_L; END PROCESS;END behav;秒、分计数模块的仿真波形如图3、图4:图3图4波形分析:从仿真波形可知,当计数到59时,即OUT_H=0101,OUT_L=1001时,下一个时钟上升沿到来时就清零了,即OUT_H=0000,OUT_L=0000,并且产生进位信号,即C=1,然后重新开始计数,如此循环,符合设计要求。4.2 时模块程序及仿真时计数模块就是一个24进制计数器,记数到23时,下一个时钟脉冲到来时清零,重新从00开始计数。VHDL的RTL描述如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt_h IS PORT(CLK,CLR:IN STD_LOGIC; OUT_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); OUT_L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END cnt_h;ARCHITECTURE behav OF cnt_h ISSIGNAL S_H:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL S_L:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK,CLR) BEGIN IF CLR=1 THEN S_H=0000; S_L=0000; ELSIF CLK=1 AND CLKEVENT THEN IF S_H=0010 AND S_L=0011 THEN S_L=0000; S_H=0000; ELSIF S_L1001 THEN S_L=S_L+1; ELSE S_L=0000; S_H=S_H+1; END IF; END IF; END PROCESS; OUT_H=S_H; OUT_L8 THEN DOUT=1;T:=T-1; ELSE DOUT=0; END IF; END IF; ELSE DOUT=0;T:=0; END IF; END PROCESS;END behav;消抖模块电路原理图如下图6:图6 消抖模块电路原理图4.4 顶层文件设计VHDL的RTL描述如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY clock IS PORT ( CLK1m : IN STD_LOGIC; -输入1MHZ CLK1: IN STD_LOGIC; -输入1HZ CLR0 : IN STD_LOGIC; KEY1_M : IN STD_LOGIC; -调时调分键 KEY2_H : IN STD_LOGIC; SECH : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); -时分秒输出 SECL : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); MINH : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); MINL : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); HOUH : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); HOUL : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); END;ARCHITECTURE behav OF clock IS SIGNAL SCO1, SCOM : STD_LOGIC; SIGNAL YS, YM : STD_LOGIC; SIGNAL SCO2,SCOH : STD_LOGIC; SIGNAL S1,S2 : STD_LOGIC; SIGNAL SMINH,SMINL :STD_LOGIC_VECTOR (3 DOWNTO 0); SIGNAL SSECH,SSECL:STD_LOGIC_VECTOR (3 DOWNTO 0);COMPONENT cnt_sm -分和秒模块PORT(CLK,CLR:IN STD_LOGIC; OUT_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); OUT_L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); C:OUT STD_LOGIC);END COMPONENT;COMPONENT cnt_h -时模块PORT(CLK,CLR:IN STD_LOGIC; OUT_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); OUT_L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;COMPONENT ajxd -消抖模块PORT(DIN,CLK:IN STD_LOGIC; DOUT:OUT STD_LOGIC);END COMPONENT;BEGIN PROCESS(CLK10m,KEY1_M,KEY2_H) -调时调分 BEGIN IF CLK1mEVENT AND CLK1m=1 THEN IF S1=1 THEN SCOM=1; ELSE SCOM=0; END IF; IF S2=1 THEN SCOH=1; ELSE SCOHCLK1,CLR=CLR0,C=SCO1, OUT_L=SSECL,OUT_H=SSECH); -秒计数模块例化 U2:cnt_sm PORT MAP (CLK=YS,CLR=CLR0,C=SCO2, OUT_L=SMINL,OUT_H=SMINH); -分钟计数模块例化 U3:cnt_h PORT MAP (CLK=YM,CLR=CLR0,OUT_L=HOUL,OUT_H=HOUH); -小时计数模块例化 U4:ajxd PORT MAP (DIN=KEY1_M,CLK= CLK1m,DOUT=S1); -按键模块例化 U5:ajxd PORT MAP (DIN=KEY2_H,CLK= CLK1m,DOUT=S2); -按键模块例化 YS=SCOM OR SCO1; YM=SCOH OR SCO2; SECL=SSECL; SECH=SSECH; MINL=SMINL; MINHCLK1,CLR=CLR0,C=SCO1, OUT_L=SSECL,OUT_H=SSECH 。而在U2中:CLK=YS,CLR=CLR0,C=SCO2, OUT_L=SMINL,OUT_H=SMINH。这样可以综合出秒模块和分钟模块。U4,U5的例化也是这个道理。其中,U4的KEY1_M是调节分钟的按键;U5的KEY2_H是调节小时的按键。顶层模块电路原理如下图7:图7 顶层模块电路原理图五、调试当把程序下载到试验箱上的时候,时分秒能够正常显示,秒逢60向分钟进1,分钟数加1。当分钟数大于59后,向小时进1,小时数加1。小时数满24后,变为00。按下清零端,时钟显示变为00:00:00。调分按键,每按1次,分钟数加1,当加到59后,又从00开始加。调分正常。调时按键,每按1次,小时数加1,当加到23后,又从00开始加。调时正常。遇到的问题:当时遇到的问题就是,例如当实验箱上显示的时间为8:59:59,当下一个1Hz时钟脉冲到来时,时间立马变为9:00:00。然而,继续往前计时,当计到9:00:59时,下一个秒时钟脉冲到来时,时间却变为10:01:00。就是说,程序在进位的问题上发生错误了。后来检查程序,发现是顶层文件中这段程序综合出两个D触发器SCOM和SCOH导致的。问题程序:BEGIN PROCESS(CLK0,KEY1_M,KEY2_H,SCO1,SCO2) -调时调分 BEGIN IF CLK0EVENT AND CLK0=1 THEN IF SCO1=1 OR S1=1 THEN SCOM=1; ELSE SCOM=0; END IF; IF (SCO2=1 AND SCO1=1) OR S2=1 THEN SCOH=1; ELSE SCOH=0; END IF; END IF; END PROCESS; 修改后的程序:BEGIN PROCESS(CLK10m,KEY1_M,KEY2_H) -调时调分 BEGIN IF CLK1mEVENT AND CLK1m=1 THEN IF S1=1 THEN SCOM=1; ELSE SCOM=0; END IF; IF S2=1 THEN SCOH=1; ELSE S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论