指导书EDA实验_第1页
指导书EDA实验_第2页
指导书EDA实验_第3页
指导书EDA实验_第4页
指导书EDA实验_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、edaeda 技术实验指导书技术实验指导书 桂林航专电子工程系桂林航专电子工程系 20082008 年年 7 7 月第月第 1 1 版版 20082008 年年 7 7 月第月第 1 1 次印刷次印刷 目目 录录 实验一实验一 quartus ii 的使用的使用.1 实验二实验二 组合电路设计组合电路设计.4 实验三实验三 vhdl 的并行语句的并行语句.6 实验四实验四 计数器及时序电路设计计数器及时序电路设计.9 实验五实验五 交通灯控制器的设计交通灯控制器的设计 .12 实验六实验六 七段译码器的设计七段译码器的设计.16 实验七实验七 数字系统的层次化设计数字系统的层次化设计.19 附

2、附 实验报告格式实验报告格式示示例例.23 实验一实验一 quartus ii 的使用的使用 一、一、实验目的实验目的 了解quartus ii的功能及使用方法,掌握 cpld/fpga 的开发步骤。 二、二、实验要求实验要求 利用图形输入法设计一个 38 译码器,并完成编译、仿真、编程下载、硬件测 试等过程。 三、三、实验原理与方案实验原理与方案 quartus ii是完全集成化的可编程逻辑设计环境,可以完成设计输入、编译、仿真、 编程下载等一系列过程。 在quartus ii中可采用原理图输入法进行设计,即先为工程建立一个文件夹,然 后在原理图输入窗口调入所用元件,连线后得到正确的设计原理

3、图,然后再进行编 译、排错、仿真、下载等操作。 在建立文件夹时注意名字不能使用中文,且不可含有空格。在调用元件时要用 到三个元件库,位于maxplus2max2lib 路径下。其中 prim 库为基本逻辑元件库,包 含基本门电路、输入输出符号等;mf 为宏功能元件库,主要包含 74 系列门电路等; mega_lpm 为参数可变的兆功能元件库,含有计数器等逻辑部件。 在编译时要先将设计文件设置成“工程”(set project to current file),还要选择目标 器件,本实验中使用的器件为 acex 系列的 acex-ep1k10tc100-3。quartus ii 的 编译器(co

4、mpiler)包含了一般 eda 流程中的多个功能部分,编译器窗口中各功能 模块的含义如下: compiler netlist extractor:是编译器网表文件提取器,能将输入的原理图文件或 hdl 文件转换成网表文件,并检查其中可能的错误。该模块还负责连接顶层设计中 的多层次设计文件,另外还包含一个内置的、用于接受外部标准网表文件的阅读器。 database builder:是基本编译文件建立器,能将含有任何设计层次的设计网表 文件转换成一个单一层次的网表文件,以便进行逻辑综合。 logic synthesizer :是逻辑综合器,对设计项目进行逻辑化简、逻辑优化和检查 逻辑错误。综合后

5、输出的网表文件表达了设计项目中底层逻辑元件最基本的连接方 式和逻辑关系。逻辑综合器的工作方式和优化方案可以通过一些选项来实现,具体 方法请查阅相关书籍。 partitioner:是逻辑分割器,如果选定的目标器件资源太小,容纳不下设计项目, 该分割器则自动将设计项目进行分割,使得它们能够在多个器件中实现。 fitter:是适配器,或者说是结构综合器或布局布线器,它将逻辑综合所得的网 表文件,即底层逻辑元件的基本连接关系,在选定的目标器件中具体实现。对于布 局布线器的策略和优化方式也可以通过设置一些选项来改变和实现。 timing snf extractor:是时序仿真网表文件提取器,该功能块从适

6、配器输出的文 件中提取时序仿真网表文件,以对设计项目进行仿真测试用。对于大的设计项目, 一般先进行功能仿真,方法是在 compiler 窗口下选择 processing 项中的 function snf extractor 选项。仿真网表文件(snf)是仿真时的必需文件,除此以外在仿真前还要 设计一个仿真通道文件(scf) ,用以确定要观察的输入输出信号。设计仿真通道文 件要在 file 菜单的 new 选项中选择 waveform editor file。 assembler:是装配器,能将适配器输出的文件,根据不同的目标器件、不同的 配置 rom 产生多种格式的编程/配置文件,如用于 cp

7、ld 或配置 rom 用的 pof 编 程文件,用于对 fpga 直接配置的 sof 文件,用于单片机对 fpga 配置的 hex 文 件等。 编译通过的设计项目是否能完成预期的逻辑功能,可以通过仿真来验证,主要 步骤如下: (1) 建立仿真通道文件(scf) 。 (2) 输入信号节点。 (3) 设置仿真参数。一般首先选择菜单 optionsnap to grid 取消前面的“”, 以便能任意设置输入电平或设置输入时钟信号的周期。 (4) 设定仿真时间。 (5) 设置输入信号波形。 (6) 保存波形文件。 (7) 运行仿真器。选择主菜单 quartus iisimulator,单击 start

8、 按钮。 (8) 观察波形。 (9) 延时精确测量。若要精确测量电路的输入与输出的延时,可选择主菜单 quartus iitiming analyzer。 在仿真通过后,可以对器件进行编程和硬件测试。在编程前要完成目标芯片的 引脚锁定,并重新编译。引脚锁定的方法是选择菜单 assignpinlocation/chip。编程 时要用下载电缆线把计算机并行口(打印口)与目标板(实验板)连接起来,选择 主菜单 quartus iiprogrammer,再选择菜单 optionshardware setup,选择 byteblaster(mv)编程方式。在编程器窗口中单击 configure 按钮,如

9、果没有故障会出 现配置完成的信息提示,表明编程(配置)完毕,之后就可以进行硬件测试了。 本实验的电路方案可参考下图: 四、四、实验内容、步骤与结果实验内容、步骤与结果 1、建立文件夹:e:2005045101xx。 2、启动 quartus ii,打开图形编辑器输入设计并存盘。 3、项目编译 1)将设计文件设成项目。 2)选择目标器件:acex-ep1k10tc100-3。 3)参数设置:取默认值。 4)编译。 4、时序仿真 1)建立波形文件:*.scf。 2)参数设置。 3)打开仿真窗口并”start”。 4)查看仿真结果 请记录仿真波形,并添加到实验报告中。 5、器件编程 1)连好电缆,锁

10、定引脚并重新编译。 2)打开“programer”窗口。 3)选择编程/配置目标文件(*.pof/sof) 。 4)点击“program”或”configure”。 6、硬件测试。 请说明测试方法并记录测试结果,在实验报告中写出。 五、五、实验结果分析与结论实验结果分析与结论 1、quartus ii 的基本功能和一般操作步骤。 2、原理图文件的建立方法。 3、仿真的方法。 4、其它。 实验二实验二 组合电路设计组合电路设计 一、实验目的一、实验目的 了解 vhdl 程序的一般结构及组合电路的设计方法。 二、实验要求二、实验要求 利用 vhdl 设计一个 38 译码器,并完成设计输入、编译、仿

11、真、硬件测试 等过程。 三、实验原理与方案三、实验原理与方案 vhdl 程序通常包含库(library) 、程序包(package) 、实体(entity) 、结构体 (architecture) 、配置(configuration)5 个组成部分,其中实体和结构体是 vhdl 程序不可缺少的最基本的 2 个组成部分。在 quartus ii 环境下,vhdl 程序可以通 过文本编辑器(text editor)编辑,方法是打开 quartus ii,选择菜单 filenew,选中 text editor file 选项,进入文本编辑器界面,在其中进行录入编辑等。编辑完毕后要 保存文件,保存文件

12、时要注意存放路径必须是事先建立好的用于存放工程 (project)的文件夹,vhdl 程序的文件名必须与实体名相同,扩展名必须为. vhd,例如 decode38.vhd。对采用 vhdl 描述的电路设计除了设计输入方式与原理 图描述不同外,其余的设计步骤均相同。 组合电路的特点是电路任一时刻的输出仅与当时的输入有关,而与以前的状态 无关,或者说只要输入变化,输出就变化。组合电路的设计只需注意如果采用条件 语句,一定要采用完整的条件语句,如下面的参考程序中的 if_then_else 程序结 构。 对于本实验,下面的程序可供参考: library ieee; use ieee.std_logi

13、c_1164.all; entity decode38 is port (g1,g2a,g2b:in std_logic; a,b,c:in std_logic; y:out std_logic_vector( 7 downto 0); end decode38; architecture behave of decode38 is signal indata:std_logic_vector(2 downto 0); begin indatayyyyyyyyy=”xxxxxxxx”; end case; else y=”11111111”; end if; end process; end

14、behave; 四、实验内容、步骤与结果四、实验内容、步骤与结果 1、 建立文件夹:e:2005045101xx。 2、启动 quartus ii,打开文本编辑器输入设计并存盘。 3、项目编译 1)将设计文件设成项目。 2)选择目标器件:acex-ep1k10tc100-3。 3)参数设置:取默认值。 4)编译。 4、时序仿真 1)建立波形文件:*.scf。 2)参数设置。 3)打开仿真窗口并”start”。 4)查看仿真结果 请记录仿真波形,并添加到实验报告中。 5、器件编程 1)连好电缆,锁定引脚并重新编译。 2)打开“programer”窗口。 3) 选择编程/配置目标文件(*.pof/

15、sof) 。 4)点击“program”或”configure”。 6、 硬件测试 请说明测试方法并记录测试结果,在实验报告中写出。 五、实验结果分析与实验结论五、实验结果分析与实验结论 1、根据仿真及硬件测试结果说明是否达到了设计要求。 2、vhdl 程序的基本结构。 3、组合电路的设计方法。 4、其它。 实验三实验三 vhdl 的并行语句的并行语句 一、实验目的一、实验目的 掌握 vhdl 中并行语句的特点、功能和使用方法;进一步熟悉 maxplusii 的 使用方法。 二、实验要求二、实验要求 用选择信号赋值语句或条件信号赋值语句设计一个 2 线4 线译码器,并完成 设计输入、编译、仿真

16、等过程。 三、实验原理与方案三、实验原理与方案 vhdl 的基本描述语句分成顺序语句和并行语句两大类。顺序语句只能包含在 进程中,并行语句直接出现在结构体中。在结构体中的并行语句的执行是同步的, 与书写顺序无关。 选择信号赋值语句和条件信号赋值语句属于并行语句,它们的格式如下: 选择信号赋值语句: with 选择表达式 select 赋值目标信号=表达式 1 when 选择值 1, 表达式 2 when 选择值 2, 表达式 n when 选择值 n; 选择信号赋值语句不能在进程中应用,但其功能与进程中的 case 语句相似。 选择信号语句中也有敏感量,即关键词 with 后的选择表达式,每当

17、选择表达式的 值发生变化时,就将自动对各子句的选择值进行测试对比,并将满足条件的子句对 应的表达式的值赋给目标信号。选择信号赋值语句对各子句中选择值的测试具有同 期性,因此,不允许有条件重叠或条件覆盖不全的情况。 条件信号赋值语句: 赋值目标信号=表达式 1 when 赋值条件 1 else 表达式 2 when 赋值条件 2 else 表达式 n ; 在结构体中的条件信号赋值语句的功能类似进程中的 if 语句,在执行条件信号 语句时,每一赋值条件是按书写的先后关系逐项测定的,一旦发现赋值条件为真, 立即将对应的表达式的值赋给目标信号。由此可知,条件信号语句的赋值条件允许 有重叠现象,这与 c

18、ase 语句有很大的不同。 注意选择信号赋值语句的每一子句结尾都是逗号,最后一句是分号;而条件赋 值语句每一子句的结尾没有任何标点,只有最后一句有分号。 2 线4 线译码器是 2 个输入、4 个输出的组合电路,假设输入信号为 b、a,输 出信号为 y0-y3,则其真值表如表 31 所示: 表 31 2 线4 线译码器的真值表 b ay0 y1 y2 y3 0 00 1 1 1 0 11 0 1 1 1 01 1 0 1 1 11 1 1 0 下面是使用选择信号赋值语句的示例程序,可供实验参考。 library ieee; use ieee.std_logic_1164.all; entity

19、decode24 is port ( a,b:in std_logic; y:out std_logic_vector( 0 to 3); end decode24; architecture rtl of decode24 is signal indata:std_logic_vector(1 downto 0); begin indata=b with indata select y= ”0111” when “00”, ”1011” when “01”, ”1101” when “10”, ”1110” when “11”, ”xxxx” when others; end rtl; 四、

20、实验内容、步骤与结果四、实验内容、步骤与结果 (一)使用选择信号赋值语句实现实验要求 1、建立文件夹:e:2005045101xx。 2、启动 quartus ii,打开文本编辑器输入设计并存盘。 3、项目编译 1)将设计文件设成项目。 2)选择目标器件:acex-ep1k10tc100-3。 3)参数设置:取默认值。 4)编译。 4、时序仿真 1)建立波形文件:*.scf。 2)参数设置。 3)打开仿真窗口并”start”。 4)查看仿真结果 请记录仿真波形,并添加到实验报告中。 5、器件编程 1)锁定引脚并重新编译。 2)打开“programer”窗口。 3) 选择编程/配置目标文件(*.

21、pof/sof) 。 4)点击“program”或”configure”。 6、硬件测试 请说明测试方法并记录测试结果,在实验报告中写出。 (二)使用条件信号赋值语句实现实验要求 步骤同上。 五、实验结果分析与实验结论五、实验结果分析与实验结论 1、根据仿真及硬件测试结果说明实验是否达到了要求。 2、并行语句的特点。 3、选择信号赋值语句和条件信号赋值语句的异同。 4、其它。 实验四实验四 计数器及时序电路设计计数器及时序电路设计 一、实验目的一、实验目的 掌握时序电路的设计方法,进一步熟悉 maxplusii 的使用方法。 二、实验要求二、实验要求 1、设计一个 4 位二进制计数器,并完成设

22、计输入、编译、仿真、硬件测试等过程; 2、变成通用计数器; 3、利用元件例化语句实现 6 位计数器。 三、实验原理与方案三、实验原理与方案 时序电路含有记忆元件(例如触发器) ,电路状态的变化一般只发生在时钟信号 的特定时刻(例如上升沿) ,而其它时刻保持原有状态不变。时序电路一般只能利用 进程中的顺序语句来建立,最主要的途径是利用不完整的条件语句描述。时序电路 中两个关键信号是时钟信号和复位信号,在对时钟信号边沿检测的描述方法中,最 常用的表达式是 clk event and clk=1。 典型的 4 位二进制加法计数器的功能表如下,其中 clr 为异步清零输入端, clk 为时钟脉冲输入端

23、,q3q2q1q0为计数状态输出端,如表 41 所示。 表 41 计数器功能表 clrclkq3q2q1q0 1x0000 0上升沿计数值加 1 0其它保持不变 下面是实现该功能的示例程序,可供实验中参考。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity counter4 is port(clk,clr:in std_logic; q:buffer std_logic_vector(3 downto 0); end c

24、ounter4; architecture behav of counter4 is begin process(clk,clr) begin if(clr=1)then q0); elsif (clkevent and clk=1) then q6) port map(clk,clr,q); 。 四、实验内容、步骤与结果四、实验内容、步骤与结果 1、建立文件夹:e:2005045101xx。 2、启动 quartus ii,打开文本编辑器输入设计并存盘。 3、项目编译 1)将设计文件设成项目。 2)选择目标器件:acex-ep1k10tc100-3。 3)参数设置:取默认值。 4)编译。 4

25、、时序仿真 1)建立波形文件:*.scf。 2)参数设置。 3)打开仿真窗口并”start”。 4)查看仿真结果 请记录仿真波形,并添加到实验报告中。 5、器件编程 1)锁定引脚并重新编译。 2)打开“programer”窗口。 3) 选择编程/配置目标文件(*.pof/sof) 。 4)点击“program”或”configure”。 6、硬件测试 请说明测试方法并记录测试结果,在实验报告中写出。 五、实验结果分析与实验结论五、实验结果分析与实验结论 1、分析仿真及硬件测试结果说明实验是否达到了要求。 2、时序电路设计的一般方法。 3、其它。 实验五实验五 交通灯控制器的设计交通灯控制器的设

26、计 一、实验目的一、实验目的 了解状态机的典型结构及编写方法。 二、实验要求二、实验要求 使用状态机设计一个交通灯控制器,该控制器用于控制十字路口的信号灯和倒 计时显示器。在东西和南北两个方向上均有一组红、黄、绿灯和倒计时显示器,假 设各灯交替点亮的时间为;红灯 45 秒,绿灯 40 秒,黄灯 5 秒,同时用数码管指示 当前状态的剩余时间。另外设置一个禁止通行控制输入信号端,当该信号为低电平 时,两个方向都禁止通行,红灯点亮,计时器不显示时间。完成设计输入、编译、 仿真、硬件测试等过程。 三、实验原理与方案三、实验原理与方案 根据实验要求,两个方向灯的点亮状态共有红绿、红黄、绿红、黄红四种组合

27、, 如表 51 所示。 表 51 交通灯的状态变化表 东西方向南北方向 状 态 红 黄 绿绿 黄 红 点亮时间(秒) s11 0 01 0 040 s21 0 00 1 05 s30 0 10 0 140 s40 1 00 0 15 从表中可以看出,交通灯的有效状态共有 4 种,某一状态的定时时间到,则转 向下一个状态。在采用状态机设计时可以考虑定义一个状态变量,取值范围为 s1、s2、s3、s4,另外对应禁止通行的特殊状态还可设置一个状态 s0。为了实现各 状态的定时,设置两个计数定时器 ew、sn,分别用于对东西、南北方向的各状态 定时。 典型的状态机结构包括说明部分、主控时序进程、主控组

28、合进程。说明部分中 使用 type 语句将状态变量定义为新的数据类型,主控时序进程在时钟脉冲的驱动 下实现状态转换,主控组合进程控制下一状态的走向和电路的输出。下面的程序可 供参考: package pjtd is type state is(s0,s1,s2,s3,s4); end pjtd; library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use work. pjtd.all; entity jtd is port(clk,forbid:in bit; led:buffer std_lo

29、gic_vector(5 downto 0); ew,sn:buffer std_logic_vector(7 downto 0); end jtd; architecture behav of jtd is type state is (s0,s1,s2,s3,s4); signal current_state,next_state: state; begin reg:process(clk,forbid) begin if(forbid=0)then current_state =s0; ew=00000000; sn01000110 or sn01000110then ew=010001

30、01; sn=01000000; current_state =s1; elsif ew=00000110 and sn=00000001 then ew=00000101; sn=00000101; current_state=s2; elsif ew=00000001 and sn=00000001 and current_state =s2 then ew=01000000; sn=01000101; current_state=s3; elsif ew=00000001 and sn=00000110 then ew=00000101; sn=00000101; current_sta

31、te=s4; elsif ew=00000001 and sn=00000001 and current_state =s4 then ew=01000101; sn=01000000; current_state=s1; elsif ew( 3 downto 0)=0000then ew=ew-7; sn=sn-1; elsif sn( 3 downto 0)=0000then ew=ew-1; sn=sn-7; else ew=ew-1; snledledledledledout_dataout_dataout_dataout_dataout_dataout_dataout_dataout

32、_dataout_dataout_dataout_data=”0110001”; end case; end process; end ouview; 在进行硬件测试时,可以利用实验箱中的拨动开关提供 bcd 码输入,利用 8 位 数码管中的任何 1 位观察显示结果。8 位数码管为共阴极类型,连线时只要将电路 的 a-g 输出端连接到数码管的对应的接线端,再将数码管的位选端 sel0-sel2 接固 定的电平即可。 四、实验内容、步骤与结果四、实验内容、步骤与结果 1、建立文件夹:e:2005045101xx。 2、启动 quartus ii,打开文本编辑器输入设计并存盘。 3、项目编译 1)

33、将设计文件设成项目。 2)选择目标器件:acex-ep1k10tc100-3。 3)参数设置:取默认值。 4)编译。 4、时序仿真 1)建立波形文件:*.scf。 2)参数设置。 3)打开仿真窗口并”start”。 4)查看仿真结果 请记录仿真波形,并添加到实验报告中。 5、器件编程 1)锁定引脚并重新编译。 2)打开“programer”窗口。 3) 选择编程/配置目标文件(*.pof/sof) 。 4)点击“program”或”configure”。 6、硬件测试 请说明测试方法并记录测试结果,在实验报告中写出。 五、实验结果分析与实验结论五、实验结果分析与实验结论 1、所设计的电路是否实

34、现了要求的功能; 2、case 语句的功能和使用方法; 3、其它。 实验七实验七 数字系统的层次化设计数字系统的层次化设计 一、实验目的一、实验目的 了解并掌握 maxplusii 环境下数字系统的层次化设计方法。 二、实验要求二、实验要求 采用层次化的设计方法,设计一个十进制计数器译码器电路,使计数器的输 出用数码管显示,并完成设计输入、编译、仿真、硬件测试等过程; 三、实验原理与方案三、实验原理与方案 当设计一个结构较为复杂的系统时,通常采用层次化的设计方法。层次化设计 是分层次、分模块进行设计描述。描述器件总功能的模块放在最上层,称为顶层设 计;描述器件的某一部分功能的模块放在下层,称为

35、底层设计。根据图形和硬件描 述语言的特点,一般在顶层中用电路图说明各模块的连接和 i/o 关系,在底层用 vhdl 语言描述模块的逻辑功能。本实验中的电路结构可参考下图: 如果顶层文件采用原理图方式,则需要在底层设计时创建各模块元件的图形符 号,供顶层设计时调用。方法是在底层设计编译仿真无误后,选择菜单 filecreate default symbol。 顶层设计也可以采用文本方式,一般采用结构化描述方式,元件例化语句是结 构化描述的典型语句。 下面的程序可供实验中参考: library ieee; use ieee.std_logic_1164.all; use ieee.std_logi

36、c_arith.all; use ieee.std_logic_unsigned.all; entity counter10 is port(clk,:in std_logic; q:buffer std_logic_vector(3 downto 0); end counter10; architecture rtl of counter10 is begin process(clk,) begin if (clkevent and clk=1) then if q=”1001” then q=”0000” else qout_dataout_dataout_dataout_dataout_

37、dataout_dataout_dataout_dataout_dataout_dataout_data=”0110001”; end case; end process; end ouview; library ieee; use ieee.std_logic_1164.all; entity counter_seg is port(clk:in std_logic; out_seg:out std_logic_vector(0 to 6); end counter_seg; architecture structure of counter_seg is component counter10 is port(clk:in std_logic; q:buffer std_logic_vector(3 downto 0); end component; component seg7 is port(in_data:in std_logic_vector(3 down 0); out_data:out std_logic_vector(0 to 6); end component; signal out_q: std_logic_vector(3 downto 0); begin u0:counter10 p

温馨提示

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

评论

0/150

提交评论