收藏 分享(赏)

EDA技术实验教案21391.doc

上传人:dreamzhangning 文档编号:2305352 上传时间:2018-09-10 格式:DOC 页数:23 大小:451KB
下载 相关 举报
EDA技术实验教案21391.doc_第1页
第1页 / 共23页
EDA技术实验教案21391.doc_第2页
第2页 / 共23页
EDA技术实验教案21391.doc_第3页
第3页 / 共23页
EDA技术实验教案21391.doc_第4页
第4页 / 共23页
EDA技术实验教案21391.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、1一、课程名称:EDA 技术实验二、教材名称: EDA 技术使用教程 ,潘松等编著。三、本课程教学目的、要求:介绍 EDA 的基本知识、常用的 EDA 工具的使用方法和目标器件的结构原理、VHDL设计输入方法(图形和文本) 、VHDL 仿真、VHDL 的设计优化等。EDA 技术作为重要的专业课程,其实践性强。在教学时要注重理论和实践的紧密结合,通过大量上机操作,使学生掌握 VHDL 的基本结构和编程思想。2实验 1 原理图输入方法及 8 位全加器设计(4 课时)1) 实验目的:熟悉利用 MAX+plus的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个 8位全加器的设计把握利用

2、 EDA 软件进行电子电路设计的详细流程。2) 实验报告要求:详细叙述 8 位加法器的设计流程;给出各层次的原理图及其对应的仿真波形图;给出加法器的延时情况。3) 实验步骤:(1) 设计一个一位半加器。步骤 1:输入设计项目和存盘步骤 2:输入半加器元件:步骤 3:将项目设置为工程文件步骤 4:选择目标器件并编译步骤 5:时序仿真步骤 6:包装元件入库选择菜单“File”“Open” ,在“Open”对话框中选择原理图编辑文件选项“Graphic Editor Files”,然后选择 h_adder.gdf,重新打开半加器设计文件,然后选择如图 4-5 中“File”菜单的“Create De

3、fault Symbol”项,将当前文件变成了一个包装好的单一元件(Symbol),并被放置在工程路径指定的目录中以备后用。(2) 利用半加器组成一个一位全加器,并记录仿真结果。(3) 利用全加器组成一个八位全加器,并记录仿真结果。实验二 简单组合电路和时序电路设计(2 课时)一、实验目的:熟悉 Max+plus的 VHDL 文本设计流程全过程,学习简单组合电路和时序电路的设计和仿真方法。二、实验内容1:首先利用 MAX+plus完成 2 选 1 多路选择器和一位全加器的文本编辑输入和仿真测试等步骤,给出仿真波形,验证本项设计的功能。2:设计触发器(J-K),给出程序设计、软件编译、仿真分析、

4、硬件测试及详细实验过程。3:先设计或门和一位半加器的 VHDL 描述文件,并进行仿真调试,再用元件例化的方法实现一位全加器,并仿真调试。要求记录 VHDL 文件内容和仿真波形结果。4:用一位全加器设计 8 为全加器。要求记录 VHDL 文件内容和仿真波形结果。 (选作)3参考程序ENTITY mux21a ISPORT ( a, b : IN BIT; s : IN BIT;y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a ISSIGNAL d,e : BIT;BEGINd ain,b=bin,co=d,so=e); u2 :

5、 h_adder PORT MAP(a=e, b=cin, co=f,so=sum);u3 : or2a PORT MAP(a=d, b=f, c=cout);END ARCHITECTURE fd1;二选一多路选择器仿真结果:实验三 含异步清 0 和同步时钟使能的 4 位加法计数器(2 课时)一、实验目的:学习计数器的设计、仿真,进一步熟悉 VHDL 设计技术。二、实验内容:设计一含计数使能、异步复位和能进行计数值并行预置功能的 4 位加法计数器。RST 是异步清零信号,高电平有效;clk 是时钟输入信号;D0 、D1 、D2、D3 是 4 位数据输入端(数据预置输入端) 。Q0、Q1、Q2

6、、Q3 为计数器输出端。COUT 为进位输出端。 ENA 为使能端,为1时,计数器实现对 CLK时钟脉冲信号的加 1 计数,为 0 时停止计数。参考程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4B ISPORT (CLK : IN STD_LOGIC; RST : IN STD_LOGIC; ENA : IN STD_LOGIC; OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC ); END C

7、NT4B;ARCHITECTURE behav OF CNT4B ISSIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINP_REG: PROCESS(CLK, RST, ENA)BEGIN5IF RST = 1 THEN CQI LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ;END CASE ;END PROCESS ;END ;仿真结果:综合后的计数器和译码器连接电路的顶层文件原理图:实验五 状态机程序设计(4 课时)一、实验目的:71、掌握状态机的编程方法和步骤

8、;2、掌握用状态机设计序列检测器的方法和步骤; 二、实验内容用状态机编程实现对系列数“11100101”的检测,当某一系列串(以左移方式)进入检测器后,若该串与预置的系列数相同,则输出“A ”,否则输出“B” 。三、实验步骤:1、编辑系列检测器的 VHDL 程序;2、仿真测试并给出仿真波形,了解控制信号的时序;3、将上述方案改为系列检测密码为可预置(外部输入)情况,重新编写程序、编译和仿真,并记录仿真结果。参考程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK ISPORT ( DIN,CLK,CLR : IN STD_LOGIC;A

9、B : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END SCHK;ARCHITECTURE behv OF SCHK ISSIGNAL Q:INTEGER RANGE 0 TO 8;SIGNAL D:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIND IF DIN = D(7) THEN Q IF DIN = D(6) THEN Q IF DIN = D(5) THEN Q IF DIN = D(4) THEN Q IF DIN = D(3) THEN Q IF DIN = D(2) THEN Q IF DIN = D(1) THEN Q IF D

10、IN = D(0) THEN Q Q QQ QQ QQ QQ QQ QQ QQ QQ NEXT_STATE 0) ; -计数器复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿IF EN = 1 THEN -检测是否允许计数IF CQI 0);-大于 9,计数值清零 END IF;END IF;END IF; IF CQI = “1001“ THEN COUT DDD DDD D DDD D DDD D DDD D DDDD DDD D DDDD DDD D DDD D DDD D DDDD DDD D DDDD DDD D DD D DDNULL;END CA

11、SE;END PROCESS;DDQ0 Q1Q2 Q3Q4 Q5Q6 Q7NULL;END CASE; END IF; END PROCESS;PROCESS(RD,B)BEGINIF RD=1 THENCASE B ISWHEN “000“=Q QQ QQ QQ QNULL;END CASE; END IF; END PROCESS;END a;四、循环取数电路设计LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY GET_CODE ISPORT(CLK1: IN STD_LOGIC;D : IN STD_LOGIC_VECTOR(7 DOWNT

12、O 0); RD:OUT STD_LOGIC;A : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END GET_CODE;ARCHITECTURE a OF GET_CODE IS SIGNAL LOAD: STD_LOGIC;SIGNAL QQ : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL NUM: INTEGER RANGE 7 DOWNTO 0;BEGINRDAAAAAAAANULL; END CASE;END PROCESS;PROCESS(LOAD)BEG

13、INIF LOADEVENT AND LOAD=1 THEN-上升沿锁存QQC CC CC CC CNULL;END CASE;END PROCESS;END A; 应用实例一:显示“01234567”八个数字19LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY disp_data ISPORT(CLK: IN STD_LOGIC;WR:OUT STD_LOGIC;A:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END disp_data;ARCHITEC

14、TURE a OF disp_data IS -SIGNAL QQ : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL NUM: INTEGER RANGE 7 DOWNTO 0;BEGINWRQQQQQQQQNULL; END CASE; END PROCESS;END a;20实验十一 彩灯控制器设计(提高型实验)实验目的及要求:1、掌握 VHDL 语言的基本结 构及编程思想。2、掌握 VHDL 语言的进行系 统设计的方法和步骤。3、培养学生综合应用能力。实验内容:1、了解各类节日彩灯的显示方式(主要是 动态方式)(上街 观察);2、将你所了解的情况,画出你的设计思

15、想框图;3、根据框图画出电路框图(用 EDA 技术);4、用 VHDL 语 言编程实现;5、完成课程设计报告(约 2000 字)实验十二、红绿交通灯控制系统实验目的及要求:1、掌握 VHDL 语言的基本结 构及编程思想。2、掌握 VHDL 语言的进行系 统设计的方法和步骤。3、培养学生综合应用能力。实验内容:设计一个简易十字路口交通灯控制器。要求:1、每个路口有红、绿、黄三个指示灯指示交通运行情况。红灯亮,禁止 车辆通行;绿灯亮,车辆正常通行。2、利用两位数码管显示通行到 计时时间。3、用 VHDL 语 言编程实现;4、完成课程设计报告实验步骤:1、红绿黄灯秒计数选择控制电路(traffic_

16、mux)SING_STATE: 00 绿灯 20 秒(横向路口) ; 01 黄灯 5 秒(横向路口)10 绿灯 20 秒(直向路口) 11 黄灯 5 秒(直向路口)RECOUNT:重新计数信号。 ,发送倒计时时间数据; ,正常倒计时;LIBRARY IEEE; USE IEEE.std_logic_1164.all;USE IEEE.std_logic_unsigned.all; USE IEEE.std_logic_arith.all;entity traffic_mux isport(reset,clk_1Hz,recount: in std_logic;sign_state: in st

17、d_logic_vector(1 downto 0);load: out integer range 255 downto 0);end; beginprocess(reset,clk_1s)21beginif reset=1 then load load load load load null;END CASE;end if; end if; end process;end BEHAVIOR;2、倒计时控制电路(count_down )library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.

18、std_logic_unsigned.all;entity count_down isport(reset,clk_1Hz: in std_logic;recount:in std_logic;load: in integer range 255 downto 0;seg7:out std_logic_vector(15 downto 0);next_state: out std_logic);end; architecture BEHAVIOR of count_down is signal cnt_ff: integer range 255 downto 0;beginprocess(cl

19、k_1Hz,reset)beginif (reset=1) then cnt_ffseg7seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 seg7 if (a_m=1 and clk_1Hz=1) thenif (next_state = 1) then -当前计数完毕,转入下一种计时recount - now state: red0 on yellow1

20、 flash if (a_m=1 and clk_1Hz=1) thenif (next_state = 1) thenrecount - now state: green0 on red1 on 23if (a_m=1 and ena_1Hz=1) thenif (next_state = 1) then recount - now state: green0 on red1 onif (a_m=1 and ena_1Hz=1) thenif (next_state = 1) then recount state=r0g1; recount=0; sign_state = “00“;end

21、case; end if; end if; end process; - light: r(10)y(10)g(10)light = “010010“ when (state=r0g1) else“011000“ when (state=r0y1) else“100001“ when (state=g0r1) else“100100“ when (state=y0r1) else“110000“; red = light(5 downto 4);yellow = light(3 downto 2) and (flash_1Hz green = light(1 downto 0);end BEHAVIOR;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报