EDA与VHDL知识点总结与期末考试试卷及答案 (13)

EDA与VHDL知识点总结与期末考试试卷及答案13

(本大题共10小题,每空1分,共20 分)

1.一般把EDA技术的发展分为 MOS时代 、 CMOS时

代 和 ASIC 三个阶段。

2.EDA设计流程包括 设计输入 、 设计实现 、 实际设计检验 和 下载编程 四个步骤。

3.EDA设计输入主要包括 图形输入 、 HDL文本输入 和

EDA与VHDL知识点总结与期末考试试卷及答案13

状态机输入 。

4.时序仿真是在设计输入完成之后,选择具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为 功能仿真 。

5.VHDL的数据对象包括 变量 、 常量 和 信号 ,它们是用来存放各种类型数据的容器。

6.图形文件设计结束后一定要通过 仿真 ,检查设计文件是否正确。

7.以EDA方式设计实现的电路设计文件,最终可以编程下载

到 FPGA 和 CPLD 芯片中,完成硬件设计和验证。

8.MAX+PLUS的文本文件类型是(后缀名) .VHD 。

9.在PC上利用VHDL进行项目设计,不允许在 根目录 下进行,必须在根目录为设计建立一个工程目录(即文件夹)。

10.VHDL源程序的文件名应与 实体名 相同,否则无法通过编译。

(本大题共10小题,每空1分,共20 分)

1.一般把EDA技术的发展分为 MOS时代 、 CMOS时

代 和 ASIC 三个阶段。

2.EDA设计流程包括 设计输入 、 设计实现 、 实际设计检验 和 下载编程 四个步骤。

3.EDA设计输入主要包括 图形输入 、 HDL文本输入 和 状态机输入 。

4.时序仿真是在设计输入完成之后,选择具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为 功能仿真 。

5.VHDL的数据对象包括 变量 、 常量 和 信号 ,它们是用来存放各种类型数据的容器。

6.图形文件设计结束后一定要通过 仿真 ,检查设计文件是否正确。

7.以EDA方式设计实现的电路设计文件,最终可以编程下载

到 FPGA 和 CPLD 芯片中,完成硬件设计和验证。

8.MAX+PLUS的文本文件类型是(后缀名) .VHD 。

9.在PC上利用VHDL进行项目设计,不允许在 根目录 下进行,必须在根目录为设计建立一个工程目录(即文件夹)。

10.VHDL源程序的文件名应与 实体名 相同,否则无法通过编译。

EDA与VHDL知识点总结与期末考试试卷及答案13

二、选择题:(本大题共5小题,每小题3分,共15 分)。

11. 在EDA工具中,能完成在目标系统器件上布局布线软件称为(C )

A.仿真器 B.综合器 C.适配器 D.下载器

12. 在执行MAX+PLUSⅡ的(d )命令,可以精确分析设计电路输入与输出波形间的延时量。

A .Create default symbol B. Simulator

C. Compiler D.Timing Analyzer

13.VHDL常用的库是(A )

A. IEEE B.STD C. WORK D. PACKAGE

14.下面既是并行语句又是串行语句的是( C )

A.变量赋值 B.信号赋值 C.PROCESS语句 D.WHEN…ELSE语句

15.在VHDL中,用语句(D )表示clock的下降沿。

A. clock’EVENT B.

clock’EVENT AND clock=’1’

C. clock=’0’ D. clock’EVENT AND clock=’0’

VHDL和FPGA: 超高速硬件描述语言 现场可编程门阵列

杭州电子科技大学20xx年EDA技术与VHD学生考试卷答案

考试课程 EDA技术与VHDL 考试日期 20xx年 月 日 成 绩 参考答卷

课程号 教师号 任课教师姓名

考生姓名 学号(8位) 年级 专业

一、单项选择题:(20分)

1. IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的IP核为__________。A

A .软IP B.固IP C.硬IP D.都不是

2. 综合是EDA设计流程的关键步骤,在下面对综合的描述中,_________是错误的。D

A. 综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;

B. 综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件;

C. 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束;

D. 综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并

且这种映射关系是唯一的(即综合结果是唯一的)。

3. 大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是__C__。

A. FPGA是基于乘积项结构的可编程逻辑器件;

B. FPGA是全称为复杂可编程逻辑器件;

C. 基于SRAM的FPGA器件,在每次上电后必须进行一次配置;

D. 在Altera公司生产的器件中,MAX7000系列属FPGA结构。

4. 进程中的变量赋值语句,其变量更新是_________。A

开发工具的发展趋势

面对当今飞速发展的电子产品市场,电子设计人员需要更加实用、快捷的开发工具,使用统一的集成化设计环境,改变优先考虑具体物理实现方式的传统设计思路,将精力集中到设计构思、方案比较和寻找优化设计等方面,以最快的速度开发出性能优良、质量一流的电子产品。开发工具的发展趋势如下:

(1)具有混合信号处理能力

由于数字电路和模拟电路的不同特性,模拟集成电路EDA工具的发展远远落后于数字电路EDA开发工具。但是,由于物理量本身多以模拟形式存在,实现高性能复杂电子系统的设计必然离不开模拟信号。20世纪90年代以来,EDA 工具厂商都比较重视数模混合信号设计工具的开发。美国 Cadence 、Synopsys等公司开发的EDA工具已经具有了数模混合设计能力,这些EDA开发工具能完成含有模数变换、数字信号处理、专用集成电路宏单元、数模变换和各种压控振荡器在内的混合系统设计。

(2)高效的仿真工具

在整个电子系统设计过程中,仿真是花费时间最多的工作,也是占用EAD工具时间最多的一个环节。可以将电子系统设计的仿真过程分为两个阶段:设计前期的系统级仿真和设计过程中的电路级仿真。系统级仿真主要验证系统的功能,如验证设计的有效性等;电路级仿真主要验证系统的性能,决定怎样实现设计,如测试设计的精度、处理和保证设计要求等。要提高仿真的效率,一方面是要建立合理的仿真算法;另一方面是要更好地解决系统级仿真中,系统模型的建模和电路级仿真中电路模型的建模技术。在未来的EDA技术中,仿真工具将有较大的发展空间。

(3)理想的逻辑综合、优化工具

逻辑综合功能是将高层次系统行为设计自动翻译成门级逻辑的电路描述,做到了实际与工艺的独立。优化则是对于上述综合生成的电路网表,根据逻辑方程功能等效的原则,用更小、更快的综合结果替代一些复杂的逻辑电路单元,根据指定目标库映射成新的网表。随着电子系统的集成规模越来越大,几乎不可能直接面向电路图做设计,要将设计者的精力从繁琐的逻辑图设计和分析中转移到设计前期算法开发上。逻辑综合、优化工具就是要把设计者的算法完整高效地生成电路网表。

1.4.3 系统描述方式的发展趋势

(1)描述方式简便化

20世纪80年代,电子设计开始采用新的综合工具,设计工作由逻辑图设计描述转向以各种

硬件描述语言为主的编程方式。用硬件描述语言描述设计,更接近系统行为描述,且便于综合,更适于传递和修改设计信息,还可以建立独立于工艺的设计文件,不便之处是不太直观,要求设计师具有硬件语言编程能力,但是编程能力需要长时间的培养。

到了20世纪90年代,一些EDA公司相继推出了一批图形化的设计输入工具。这些输入工具允许设计师用他们最方便并熟悉的设计方式(如框图、状态图、真值表和逻辑方程)建立设计文件,然后由EDA工具自动生成综合所需的硬件描述语言文件。图形化的描述方式具有简单直观、容易掌握的优点,是未来主要的发展趋势。

(2)描述方式高效化和统一化

C/C++语言是软件工程师在开发商业软件时的标准语言,也是使用最为广泛的高级语言。许多公司已经提出了不少方案,尝试在C语言的基础上设计下一代硬件描述语言。随着算法描述抽象层次的提高,使用C/C++语言设计系统的优势将更加明显,设计者可以快速而简洁地构建功能函数,通过标准库和函数调用技术,创建更庞大、更复杂和更高速的系统。但是,目前的C/C++语言描述方式与硬件描述语言之间还有一段距离,还有待于更多EDA软件厂家和可编程逻辑器件公司的支持。随着EDA技术的不断成熟,软件和硬件的概念将日益模糊,使用单一的高级语言直接设计整个系统将是一个统一化的发展趋势。

A. 立即完成;

B. 按顺序完成;

C. 在进程的最后完成;

D. 都不对。 5. VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述___________。D

A. 器件外部特性;

B. 器件的综合约束;

C. 器件外部特性与内部功能;

D. 器件的内部功能。

6. 不完整的IF语句,其综合结果可实现________。A

A. 时序逻辑电路 B. 组合逻辑电路

C. 双向电路 D. 三态控制电路

7. 子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列哪些方法是面积优化_________。B ①流水线设计 ②资源共享 ③逻辑优化 ④串行化 ⑤寄存器配平 ⑥关键路径法

A. ①③⑤ B. ②③④

C. ②⑤⑥ D. ①④⑥

开发工具的发展趋势

面对当今飞速发展的电子产品市场,电子设计人员需要更加实用、快捷的开发工具,使用统一的集成化设计环境,改变优先考虑具体物理实现方式的传统设计思路,将精力集中到设计构思、方案比较和寻找优化设计等方面,以最快的速度开发出性能优良、质量一流的电子产品。开发工具的发展趋势如下:

(1)具有混合信号处理能力

由于数字电路和模拟电路的不同特性,模拟集成电路EDA工具的发展远远落后于数字电路EDA开发工具。但是,由于物理量本身多以模拟形式存在,实现高性能复杂电子系统的设计必然离不开模拟信号。20世纪90年代以来,EDA 工具厂商都比较重视数模混合信号设计工具的开发。美国 Cadence 、Synopsys等公司开发的EDA工具已经具有了数模混合设计能力,这些EDA开发工具能完成含有模数变换、数字信号处理、专用集成电路宏单元、数模变换和各种压控振荡器在内的混合系统设计。

(2)高效的仿真工具

在整个电子系统设计过程中,仿真是花费时间最多的工作,也是占用EAD工具时间最多的一个环节。可以将电子系统设计的仿真过程分为两个阶段:设计前期的系统级仿真和设计过程中的电路级仿真。系统级仿真主要验证系统的功能,如验证设计的有效性等;电路级仿真主要验证系统的性能,决定怎样实现设计,如测试设计的精度、处理和保证设计要求等。要提高仿真的效率,一方面是要建立合理的仿真算法;另一方面是要更好地解决系统级仿真中,系统模型的建模和电路级仿真中电路模型的建模技术。在未来的EDA技术中,仿真工具将有较大的发展空间。

(3)理想的逻辑综合、优化工具

逻辑综合功能是将高层次系统行为设计自动翻译成门级逻辑的电路描述,做到了实际与工艺的独立。优化则是对于上述综合生成的电路网表,根据逻辑方程功能等效的原则,用更小、更快的综合结果替代一些复杂的逻辑电路单元,根据指定目标库映射成新的网表。随着电子系统的集成规模越来越大,几乎不可能直接面向电路图做设计,要将设计者的精力从繁琐的逻辑图设计和分析中转移到设计前期算法开发上。逻辑综合、优化工具就是要把设计者的算法完整高效地生成电路网表。

1.4.3 系统描述方式的发展趋势

(1)描述方式简便化

20世纪80年代,电子设计开始采用新的综合工具,设计工作由逻辑图设计描述转向以各种硬件描述语言为主的编程方式。用硬件描述语言描述设计,更接近系统行为描述,且便于综合,更适于传递和修改设计信息,还可以建立独立于工艺的设计文件,不便之处是不太直观,要求设计师具有硬件语言编程能力,但是编程能力需要长时间的培养。

到了20世纪90年代,一些EDA公司相继推出了一批图形化的设计输入工具。这些输入工具允许设计师用他们最方便并熟悉的设计方式(如框图、状态图、真值表和逻辑方程)建立设计文件,然后由EDA工具自动生成综合所需的硬件描述语言文件。图形化的描述方式具有简单直观、容易掌握的优点,是未来主要的发展趋势。

(2)描述方式高效化和统一化

C/C++语言是软件工程师在开发商业软件时的标准语言,也是使用最为广泛的高级语言。许多公司已经提出了不少方案,尝试在C语言的基础上设计下一代硬件描述语言。随着算法

描述抽象层次的提高,使用C/C++语言设计系统的优势将更加明显,设计者可以快速而简洁地构建功能函数,通过标准库和函数调用技术,创建更庞大、更复杂和更高速的系统。但是,目前的C/C++语言描述方式与硬件描述语言之间还有一段距离,还有待于更多EDA软件厂家和可编程逻辑器件公司的支持。随着EDA技术的不断成熟,软件和硬件的概念将日益模糊,使用单一的高级语言直接设计整个系统将是一个统一化的发展趋势。

8. 下列标识符中,__________是不合法的标识符。B

A. State0 B. 9moon C. Not_Ack_0 D. signall

9. 关于VHDL中的数字,请找出以下数字中最大的一个:__________。A

A. 2#1111_1110#

B. 8#276#

C. 10#170#

D. 16#E#E1

开发工具的发展趋势

面对当今飞速发展的电子产品市场,电子设计人员需要更加实用、快捷的开发工具,使用统一的集成化设计环境,改变优先考虑具体物理实现方式的传统设计思路,将精力集中到设计构思、方案比较和寻找优化设计等方面,以最快的速度开发出性能优良、质量一流的电子产品。开发工具的发展趋势如下:

(1)具有混合信号处理能力

由于数字电路和模拟电路的不同特性,模拟集成电路EDA工具的发展远远落后于数字电路EDA开发工具。但是,由于物理量本身多以模拟形式存在,实现高性能复杂电子系统的设计必然离不开模拟信号。20世纪90年代以来,EDA 工具厂商都比较重视数模混合信号设计工具的开发。美国 Cadence 、Synopsys等公司开发的EDA工具已经具有了数模混合设计能力,这些EDA开发工具能完成含有模数变换、数字信号处理、专用集成电路宏单元、数模变换和各种压控振荡器在内的混合系统设计。

(2)高效的仿真工具

在整个电子系统设计过程中,仿真是花费时间最多的工作,也是占用EAD工具时间最多的一个环节。可以将电子系统设计的仿真过程分为两个阶段:设计前期的系统级仿真和设计过程中的电路级仿真。系统级仿真主要验证系统的功能,如验证设计的有效性等;电路级仿真

主要验证系统的性能,决定怎样实现设计,如测试设计的精度、处理和保证设计要求等。要提高仿真的效率,一方面是要建立合理的仿真算法;另一方面是要更好地解决系统级仿真中,系统模型的建模和电路级仿真中电路模型的建模技术。在未来的EDA技术中,仿真工具将有较大的发展空间。

(3)理想的逻辑综合、优化工具

逻辑综合功能是将高层次系统行为设计自动翻译成门级逻辑的电路描述,做到了实际与工艺的独立。优化则是对于上述综合生成的电路网表,根据逻辑方程功能等效的原则,用更小、更快的综合结果替代一些复杂的逻辑电路单元,根据指定目标库映射成新的网表。随着电子系统的集成规模越来越大,几乎不可能直接面向电路图做设计,要将设计者的精力从繁琐的逻辑图设计和分析中转移到设计前期算法开发上。逻辑综合、优化工具就是要把设计者的算法完整高效地生成电路网表。

1.4.3 系统描述方式的发展趋势

(1)描述方式简便化

20世纪80年代,电子设计开始采用新的综合工具,设计工作由逻辑图设计描述转向以各种硬件描述语言为主的编程方式。用硬件描述语言描述设计,更接近系统行为描述,且便于综合,更适于传递和修改设计信息,还可以建立独立于工艺的设计文件,不便之处是不太直观,要求设计师具有硬件语言编程能力,但是编程能力需要长时间的培养。

到了20世纪90年代,一些EDA公司相继推出了一批图形化的设计输入工具。这些输入工具允许设计师用他们最方便并熟悉的设计方式(如框图、状态图、真值表和逻辑方程)建立设计文件,然后由EDA工具自动生成综合所需的硬件描述语言文件。图形化的描述方式具有简单直观、容易掌握的优点,是未来主要的发展趋势。

(2)描述方式高效化和统一化

C/C++语言是软件工程师在开发商业软件时的标准语言,也是使用最为广泛的高级语言。许多公司已经提出了不少方案,尝试在C语言的基础上设计下一代硬件描述语言。随着算法描述抽象层次的提高,使用C/C++语言设计系统的优势将更加明显,设计者可以快速而简洁地构建功能函数,通过标准库和函数调用技术,创建更庞大、更复杂和更高速的系统。但是,目前的C/C++语言描述方式与硬件描述语言之间还有一段距离,还有待于更多EDA软件厂家和可编程逻辑器件公司的支持。随着EDA技术的不断成熟,软件和硬件的概念将日益模糊,使用单一的高级语言直接设计整个系统将是一个统一化的发展趋势。

10.下列EDA软件中,哪一个不具有逻辑综合功能:________。B

A. Max+Plus II

B. ModelSim

C. Quartus II

D. Synplify

第1页 共5页

二、EDA名词解释,写出下列缩写的中文(或者英文)含义:(10分)

1. VHDL 超高速集成电路硬件描述语言

2. FPGA 现场可编程门阵列

3. RTL 寄存器传输级

4. SOPC 可编程片上系统

5. EAB 嵌入式阵列块

三、VHDL程序填空:(10分)

下面程序是参数可定制带计数使能异步复位计数器的VHDL描述,试补充完整。 -- N-bit Up Counter with Load, Count Enable, and

-- Asynchronous Reset

library ieee;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_unsigned.all;

use IEEE.std_logic_arith.all;

entity counter_n is

generic (width : integer := 8);

port(data : in std_logic_vector (width-1 downto 0);

load, en, clk, rst : in std_logic;

q : out std_logic_vector (width - 1 downto 0));

end counter_n;

architecture behave of counter is

signal count : std_logic_vector (width-1 downto 0);

begin

process(clk, rst)

begin

if rst = '1' then

count <= (others => ?0?); ―― 清零

elsif clk?event and clk = ?1? then ―― 边沿检测

if load = '1' then

count <= data;

elsif en = '1' then

count <= count + 1;

end if;

end if;

end process;

q <= count;

end behave;

四、VHDL程序改错:(10分)

仔细阅读下列程序,回答问题

1 LIBRARY IEEE;

2 USE IEEE.STD_LOGIC_1164.ALL;

3

4 ENTITY CNT10 IS

5 PORT ( CLK : IN STD_LOGIC ;

6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) ;

7 END CNT10;

8 ARCHITECTURE bhv OF CNT10 IS

9 SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);

10 BEGIN

11 PROCESS (CLK) BEGIN

12 IF RISING_EDGE(CLK) begin

13 IF Q1 < 9 THEN

14 Q1 <= Q1 + 1 ;

15 ELSE

16 Q1 <= (OTHERS => '0');

17 END IF;

18 END IF;

19 END PROCESS ;

20 Q <= Q1;

21 END bhv;

1. 在MAX+PlusII中编译时,提示的第一条错误为:

Error: Line 12: File e:\mywork\test\cnt10.vhd: VHDL syntax error: If statement must have THEN, but found BEGIN instead

指出并修改相应行的程序(如果是缺少语句请指出大致的行数):

错误1 行号:12 程序改为:IF RISING_EDGE(CLK) THEN

错误2 行号:3 程序改为:USE IEEE.STD_LOGIC_UNSIGNED.ALL;

12 行if语句配套关键字是then而非begin

3 行程序中使用了+号重载函数,应包含使用对应程序包ieee.std_logic_unsigned.all

2. 若编译时出现如下错误,请分析原因。

当前编译的程序文件没有放在指定文件夹内,所以系统找不到WORK工作库。 第2页 共5页

五、VHDL程序设计:(15分)

设计一数据选择器MUX,其系统模块图和功能表如下图所示。试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。

(a) 用if语句。 (b) 用case 语句。 (c) 用when else 语句。

Library ieee;

Use ieee.std_logic_1164.all;

Entity mymux is

Port ( sel : in std_logic_vector(1 downto 0);

Ain, Bin : in std_logic_vector(1 downto 0);

Cout : out std_logic_vector(1 downto 0) );

End mymux;

Architecture one of mymux is

Begin

Process (sel, ain, bin)

Begin

If sel = “00” then cout <= ain or bin;

Elsif sel = “01” then cout <= ain xor bin;

Elsif sel = “10” then cout <= ain and bin;

Else cout <= ain nor bin;

End if;

End process;

End one;

Architecture two of mymux is

Begin

Process (sel, ain, bin)

Begin

Case sel is

when “00” => cout <= ain or bin;

when “01” => cout <= ain xor bin;

when “10” => cout <= ain and bin;

when others => cout <= ain nor bin;

End case; -- 选择信号输入 -- 数据输入

End process;

End two;

Architecture three of mymux is

Begin

Cout <= ain or bin when sel = “00” else

Ain xor bin when sel = “01” else

Ain and bin when sel = “10” else ain nor bin; End three;

六、根据原理图写出相应的VHDL程序:(15分)

Library ieee;

Use ieee.std_logic_1164.all;

Entity mycir is

Port ( din, clk : in std_logic;

Qout : out std_logic);

End mycir;

Architecture behave of mycir is

Signal a, b, c;

Begin

Qout <= c nand (a xor b);

Process (clk)

Begin

If clk?event and clk = ?1? then

A <= din;

B <= A;

C <= B;

End if;

End process;

End behave;

第3页 共5页

七、综合题:(20分)

(一)已知状态机状态图如图a所示;完成下列各题:

图a 状态图

图b 状态机结构图

1. 试判断该状态机类型,并说明理由。

该状态机为moore型状态机,输出数据outa和输入ina没有直接逻辑关系,outa是时钟clk的同步时序逻辑。

2. 根据状态图,写出对应于结构图b,分别由主控组合进程和主控时序进程组成的VHDL有限状态机描述。

Library ieee;

Use ieee.std_logic_1164.all;

Entity mooreb is

Port (clk, reset : in std_logic;

Ina : in std_logic_vector (1 downto 0);

Outa : out std_logic_vector (3 downto 0) );

End mooreb;

Architecture one of mooreb is

Type ms_state is (st0, st1, st2, st3);

Signal c_st, n_st : ms_state;

Begin

Process (clk, reset)

Begin

If reset = ?1? then c_st <= st0;

Elsif clk?event and clk = ?1? then c_st <= n_st;

End if;

End process;

Process (c_st)

Begin

Case c_st is

When st0 => if ina = “00” then n_st <= st0;

Else n_st <= st1;

End if;

Outa <= “0101”;

When st1 => if ina = “00” then n_st <= st1;

Else n_st <= st2;

End if;

Outa <= “1000”;

When st2 => if ina = “11” then n_st <= st0;

Else n_st <= st3;

End if;

Outa <= “1100”;

When st3 => if ina = “11” then n_st <= st3;

Else n_st <= st0;

End if;

Outa <= “1101”;

When others => n_st <= st0;

End case;

End process;

End one;

3. 若已知输入信号如下图所示,分析状态机的工作时序,画出该状态机的状态转换值(c_state)和输出控制信号(out_a);

4. 若状态机仿真过程中出现毛刺现象,应如何消除;试指出两种方法,并简单说明其原理。

方法1,添加辅助进程对输出数据进行锁存

方法2,将双进程状态机改写为单进程状态机,其输出也是锁存过了,故能消除毛刺

方法3,使用状态位直接输出型状态机编码方式,其输出直接由当前状态输出,也没有毛刺 第4页 共5页

(二) 已知一个简单的波形发生器的数字部分系统框图如下图所示

图中lcnt、lrom都是在MAX+PlusII中使用MegaWizard调用的LPM模块,其VHDL描述中Entity部分分别如下:

ENTITY lcnt IS

PORT

(

clock : IN STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0)

);

END lcnt;

ENTITY lrom IS

PORT

(

address : IN STD_LOGIC_VECTOR (9 DOWNTO 0); q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0) );

END lrom;

试用VHDL描述该系统的顶层设计(使用例化语句)。

Library ieee;

Use ieee.std_logic_1164.all;

Entity mysg is

Port (clk : in std_logic;

To_da : out std_logic_vector (9 downto 0) );

End mysq;

Architecture one of mysq is

Signal addr : std_logic_vector (9 downto 0);

Component lcnt

Port (clock : in std_logic;

Q : out std_logic_vector (9 downto 0) );

End component;

Component lrom

Port (address : in std_logic_vector (9 downto 0);

Q : out std_logic_vector (9 downto 0) ); End component;

Begin

U1 : lcnt port map (clock => clk, q => addr);

U2 : lrom port map (address => addr, q => to_da);

End one;

第5页 共5页

七、综合题:(20分)

根据如下所示状态图及其状态机结构图,回答问题

1.试判断该状态机类型,并说明理由。

改状态机可以为mealy型状态机,当输入ina变化时可影响输出outa立即变化

2.请问如何消除状态机输出信号毛刺?试列出至少两种方法,并说明理由。

方法1,添加辅助进程对输出数据进行锁存

方法2,将双进程状态机改写为单进程状态机,其输出也是锁存过了,故能消除毛刺

方法3,使用状态位直接输出型状态机编码方式,其输出直接由当前状态输出,也没有毛刺

3.试由b、c两图中任选一图写出其完整的VHDL程序。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;

ENTITY EX7 IS

PORT ( CLK, RESET : IN STD_LOGIC;

INA : IN STD_LOGIC_VECTOR(2 DOWNTO 0);

OUTA : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );

END EX7;

-- MOORE型状态机

ARCHITECTURE ONE OF EX7 IS

TYPE STATE IS (S0, S1, S2, S3);

SIGNAL C_ST : STATE;

BEGIN

PROCESS (CLK, RESET, INA) BEGIN

IF RESET = '1' THEN C_ST <= S0; OUTA <= (OTHERS => '0'); ELSIF RISING_EDGE(CLK) THEN

CASE C_ST IS

WHEN S0 =>

<= "0010";

OUTA <= "1100"; END IF;

WHEN S1 =>

S1;

C_ST <= S2; END IF;

WHEN S2 =>

S2;

C_ST <= S1; ELSE C_ST <= S3;END IF;

WHEN S3 => IF INA = "101" THEN OUTA ELSIF INA = "111" THEN C_ST <= S1; ELSIF INA = "110" THEN OUTA <= "1001"; ELSIF INA = "011" THEN OUTA <= "1111"; IF INA = "101" THEN OUTA IF INA = "000" THEN C_ST <= IF INA = "100" THEN C_ST <=

<= "1101";

ELSIF INA = "011" THEN OUTA <= "1110"; END IF;

C_ST <= S3;

WHEN OTHERS => C_ST <= S0; OUTA <= (OTHERS => '0');

END CASE;

END IF;

END PROCESS;

END ONE;

-- MEALY型状态机

ARCHITECTURE TWO OF EX7 IS

TYPE STATE IS (S0, S1, S2, S3);

SIGNAL C_ST, N_ST : STATE;

BEGIN

REG : PROCESS (CLK, RESET) BEGIN

IF RESET = '1' THEN C_ST <= S0;

ELSIF CLK'EVENT AND CLK = '1' THEN C_ST <= N_ST;END IF;

END PROCESS;

COM : PROCESS (C_ST, INA) BEGIN

CASE C_ST IS

WHEN S0 => N_ST <= S1; IF INA = "101" THEN OUTA <= "0010";

ELSIF INA = "111" THEN OUTA <= "1100"; ELSE OUTA <= "0000";END IF;

WHEN S1 => OUTA <= "1001"; IF INA = "000" THEN N_ST <= S1;

ELSIF INA = "110" THEN N_ST <= S2; ELSE N_ST <= S1;END IF;

WHEN S2 => OUTA <= "1111"; IF INA = "100" THEN N_ST <= S2;

ELSIF INA = "011" THEN N_ST <= S1; ELSE N_ST <= S3;END IF;

WHEN S3 => IF INA = "101" THEN OUTA <= "1101"; ELSIF INA = "011" THEN OUTA <= "1110"; ELSE OUTA <= "0000";END IF;

N_ST <= S3;

WHEN OTHERS => N_ST <= S0; OUTA <= (OTHERS => '0');

END CASE;

END PROCESS;

END TWO;

第4页 共5页

4. 已知一个简单的波形发生器的数字部分系统框图如下图所示:

图中DOWNCNT、MYROM都是在MAX+PlusII中使用MegaWizard调用的LPM模块,其VHDL描述中Entity部分分别如下:

ENTITY DOWNCNT IS

PORT

(

clock : IN STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (5 DOWNTO 0) );

END DOWNCNT;

ENTITY myrom IS

PORT

(

address : IN STD_LOGIC_VECTOR (5 DOWNTO 0); q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );

END myrom;

试用VHDL描述该系统的顶层设计(使用例化语句)。

Library ieee;

Use ieee.std_logic_1164.all;

Entity mysg is

Port (clk : in std_logic;

To_da : out std_logic_vector (7 downto 0) );

End mysq;

Architecture one of mysq is

Signal addr : std_logic_vector (5 downto 0);

Component lcnt

Port (clock : in std_logic;

Q : out std_logic_vector (5 downto 0) ); End component;

Component lrom

Port (address : in std_logic_vector (5 downto 0);

Q : out std_logic_vector (7 downto 0) ); End component;

Begin

U1 : lcnt port map (clock => clk, q => addr);

U2 : lrom port map (address => addr, q => to_da);

End one;

相关推荐