当前位置:文档之家› 广工 EDA课程设计

广工 EDA课程设计

课程设计课程名称___VHDL与集成电路设计___题目名称___电子钟VHDL设计______学生学院___物理与光电工程学院___专业班级___ __________学号_____________学生姓名___ ______________指导教师_______________2014年12 月19 日i目录一、前言 (1)1.1 EDA技术简介 (1)1.2 EDA的发展前景 (1)二、设计内容及要求 (1)2.1设计内容 (1)2.2 设计要求 (1)2.3 实验目的 (2)三、设计原理及框图 (2)3.1设计原理 (2)3.2 设计框图 (2)四、模块程序设计 (4)4.1 秒、分模块程序及仿真 (4)4.2 时模块程序及仿真 (6)4.3 消抖模块 (7)4.4 顶层文件设计 (8)五、调试 (11)六、心得总结 (12)参考文献 (12)ii一、前言1.1 EDA技术简介电子系统设计自动化(EDA: Electronic Design Automation)已成为不可逆转的潮流,它是包含CAD、CAE、CAM等与计算机辅助设计或设计自动化等相关技术的总称。

随着信息时代的到来,信息电子产品已不断地向系统高度集成化和高度微型化发展,使得传统的手工设计和生产技术无法满足信息产品的社会和市场需要,因此,人们开始借助于EDA技术进行产品的设计和开发。

目前EDA 技术主要是以计算机软件工具形式表现出来的,对于现代复杂的电子产品设计和开发来说,一般需要考虑“自上而下”三个不同层次内容的设计(即:系统结构级设计,PCB板级设计和IC集成芯片级设计)。

Protel DXP软件系统是一套建立在IBM兼容PC环境下的CAD电路集成设计系统,它是世界上第一套EDA环境引入到Windows环境的EDA开发工具,具有高度的集成性和可扩展性。

本设计就是利用Protel DXP 进行原理图设计、PCB布局布线、进行电路仿真测试。

通过本设计充分了解到Protel DXP的特点并且充分掌握了Protel DXP的设计系统的基础知识。

1.2 EDA的发展前景随着微电子技术和计算机技术的不断发展,在涉及通信、国防、航天、工业自动化、仪器仪表等领域工作中,EDA技术的含量以惊人的速度上升,从而使它成为当今电子技术发展的前言之一。

由于在电子系统设计领域中的明显优势,基于大规模可编程器件解决方案的EDA技术及其应用在近年中有了巨大的发展,将电子发展技术再次推向了又一崭新的历史阶段。

这些新的发展大致包含了这样6个方面:1.新器件;2.新工具软件;3.嵌入式系统设计;4.DSP系统设计;5.计算机处理器设计;6.与ASIC市场的竞争技术。

二、设计内容及要求2.1设计内容设计一个电子钟,要求可以显示时、分、秒,用户可以设置时间。

2.2 设计要求①设计思路清晰,整体设计给出框图,提供顶层电路图;②应用vhdl完成各次级模块设计,绘出具体设计程序;1③完成设计仿真和程序下载;④写出实验报告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 设计框图①系统顶层框图,如下图12图1 系统顶层框图②电子钟结构框图,如下图2图2 数字钟结构框图3四、模块程序设计4.1 秒、分模块程序及仿真秒和分计数模块是60进制计数器,计数到59后,下一个计数脉冲到来时清零,并向高位发出进位信号,然后重新从00开始计数。

VHDL的RTL描述如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt_sm ISPORT(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);BEGINPROCESS(CLK,CLR)BEGINIF CLK 'EVENT AND CLK='1' THENIF S_L(3 DOWNTO 0)<"1001" THENS_L(3 DOWNTO 0)<=S_L(3 DOWNTO 0)+1;C<='0';ELSIF S_H(3 DOWNTO 0)<"0101" THENS_L(3 DOWNTO 0)<="0000";S_H(3 DOWNTO 0)<=S_H(3 DOWNTO 0)+1;C<='0';ELSES_L(3 DOWNTO 0)<="0000";S_H(3 DOWNTO 0)<="0000";C<='1';END IF;END IF;IF CLR='1' THENS_L(3 DOWNTO 0)<="0000";S_H(3 DOWNTO 0)<="0000";4END 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,然后重新开始计数,如此循环,符合设计要求。

54.2 时模块程序及仿真时计数模块就是一个24进制计数器,记数到23时,下一个时钟脉冲到来时清零,重新从00开始计数。

VHDL的RTL描述如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt_h ISPORT(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);BEGINPROCESS(CLK,CLR)BEGINIF CLR='1' THEN S_H<="0000";S_L<="0000";ELSIF CLK='1' AND CLK'EVENT THENIF S_H="0010" AND S_L="0011" THENS_L<="0000";S_H<="0000";ELSIF S_L<"1001" 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_L<=S_L;END;6时模块的仿真波形如下图5:图5波形分析:从仿真波形可知,当计数到23时,即OUT_H=0010,OUT_L=0011时,下一个时钟上升沿到来时就清零了,即OUT_H=0000,OUT_L=0000,然后重新进行计数,如此循环符合设计要求。

4.3 消抖模块按键消抖动有很多方案,这里选择的是计数消抖,即只当有效电平到来后开始计数,当计数值大于一定值后再输出该有效电平,否则不输出,从而达到消抖目的。

VHDL的RTL描述如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ajxd ISPORT(DIN,CLK:IN STD_LOGIC;DOUT:OUT STD_LOGIC);END;ARCHITECTURE behav OF ajxd ISBEGINPROCESS(DIN)V ARIABLE T: INTEGER RANGE 0 TO 63:=0;BEGINIF DIN='1' THENIF CLK 'EVENT AND CLK='1'THENT:=T+1;IF T>8 THENDOUT<='1';T:=T-1;ELSE DOUT<='0';END IF;END IF;7ELSE 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 ISPORT ( CLK1m : IN STD_LOGIC; --输入1MHZCLK1: IN STD_LOGIC; --输入1HZCLR0 : 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));8END;ARCHITECTURE behav OF clock ISSIGNAL 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;BEGINPROCESS(CLK10m,KEY1_M,KEY2_H) --调时调分BEGINIF CLK1m'EVENT AND CLK1m='1' THENIF S1='1' THEN SCOM<='1';ELSE SCOM<='0';END IF;IF S2='1' THENSCOH<='1';ELSE SCOH<='0';END IF;END IF;END PROCESS;U1:cnt_sm PORT MAP (CLK=>CLK1,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;MINH<=SMINH;END;因为秒和分钟模块都是60进制的计数器,所以在例化时,U1和U2的元件名相同,都是cnt_sm。

相关主题