广东技术师范学院电子与信息学院10应用电子技术教育2班
20XX—20XX学年度第(X)学期期末考试试卷科目:<
考试形式:闭卷考试时间:100 分钟
院(系)别、班级:姓名:学号:
试题区:(试题区必须与答题区同时交回,含答题纸、试题纸、草稿纸的装订试卷不能分拆)
一、单项选择题:(20分)
1.在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是___C___。
A.PROCESS为一无限循环语句;敏感信号发生更新时启动进程,执行完成后,
等待下一次进程启动。
B.敏感信号参数表中,不一定要列出进程中使用的所有输入信号;
C.进程由说明部分、结构体部分、和敏感信号三部分组成;
(进程由声明语句、顺序语句、敏感信号列表组成)
D.当前进程中声明的变量不可用于其他进程。
2.在一个VHDL设计中idata是一个信号,数据类型为integer,数据范围0 to 127,下面哪个赋值语句是正确的___C___。(信号赋值符号 <= )
A.idata := 32;
B.idata <= 16#A0#; (十进制数为:10*16= 160,idata范围为0~127)
C.idata <= 16#7#E1;(十进制数为:7*16^1= 112)
D.idata := B#1010#;
3.大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是___C___。
A.FPGA是基于乘积项结构的可编程逻辑器件;
(FPGA芯片基于查找表的可编程逻辑结构)
B.FPGA是全称为复杂可编程逻辑器件;
(FPGA 现场可编程逻辑门阵列,CPLD才是复杂可编程逻辑器件)
C.基于SRAM的FPGA器件,在每次上电后必须进行一次配置;
D.在Altera公司生产的器件中,MAX7000系列属FPGA结构。
(MAX7000系列属CPLD结构)
4.进程中的变量赋值语句,其变量更新是___A___。
(变量(variable)是立即完成的,信号(signal)有延时)
A.立即完成;
B.按顺序完成;
C.在进程的最后完成;
D.都不对。
5.VHDL语言是一种结构化设计语言;一个设计实体(电路模块)包括实体与结构体两部分,结构体描述___D___。(结构体实现实体的功能,通过对实体的逻辑功能进行描述)
A.器件外部特性;
B.器件的综合约束;
C.器件外部特性与内部功能;
D.器件的内部功能。
6.CASE语句是___A___。(case语句时顺序语句中最重要最常用的顺序语句)
A. 顺序语句
B. 并行语句
C. 其它
D.组合逻辑控制电路语句
7.LIBRARY___A___; --库的声明
USE IEEE.STD_LOGIC_1164.ALL; --库的引用,引用IEEE库中的std_logic_1164中的所有项目A. IEEE B. STD C.WORK D.ENTITY counter IS
8.下列标识符中,___B___是不合法的标识符。(标识符开头必须是英文字符)
A. State0
B. 9moon
C. Not_Ack_0
D. signall
9.关于VHDL中的数字,请找出以下数字中最大的一个:___A___。(整型数字的表示)
A.2#1111_1110# --二进制数,下划线不影响数值大小,只是增强可读性,转换Array成10进制数为:254
B.8#276# --八进制数,转换成十进制为:190
C.10#170# --十进制数:170
D.16#E#E1 --十六进制数,E为十进制14,后面的E1是指14乘以相应进
制数的1次方,转换成十进制为:14*16^1=224
10.下列EDA软件中,哪一个不具有逻辑综合功能:________。
(逻辑功能简单点说就是利用软件使我们用语言设计的电路优化成最简逻辑,相当于我们数电的最简与或式)
A.Max+Plus II (Quartus II的旧版本)
B.ModelSim (专业的仿真软件,时序和功能仿真,不具备逻辑综合功能)
C.Quartus II (自带)
D.Synplify (专业的逻辑综合工具)
二.简答题30分(每题5分)。
1.根据下面的VHDL语句,描述出相应的电路原理图。
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY cfq_1 IS
PORT (d,cp :IN std_logic;
q,nq :OUT std_logic);
END cfq_1;
-- END ar_4;--老师的题目错误,结束实体,这句应该放在最后。
ARCHITECTURE ar_4 OF cfq_1 IS
BEGIN
PROCESS (CP)
BEGIN
IF cp=′1′THEN
q <= d;
nq <=NOT d;
END IF;
END PROCESS;
END ar_4; --修改后,结束实体END ar_4应该在这个位置。
自己用Quartus II软件生成的,笔试的时候应该用笔来画,元件名应与实体名一致cfq_1。2.quartusⅡ开发工具为设计者提供了哪些库?各有什么功能?(摘自《FPGA
系统设计与实例》P32)
1) IEEE库:被IEEE采用的标准化库,是VHDL设计中最重要的库;
2) STD库:所用设计单元所共享,默认的库;
3)ASIC库:矢量库,该库存放着与逻辑门一一对应的实体;
4) WORK库:用户的VHDL 设计的现行工作库用于存放用户设计和定义的一些设计单元和程序包
5)用户自定义库:设计者自己建立的设计单元资源库。
3.quartusⅡ开发工具,图形文件的扩展名是? 波形文件的扩展名是?
使用VHDL语言,文本设计文件的扩展名是?
图形文件扩展名:gdf;
波形文件扩展名:vwf
VHDL文本设计文件扩展名:vhd
4.简述FPGA的结构
FPGA由可编程逻辑块(CLB)、输入/输出模块(IOB)及可编程互连资源(PIR)等三种可编程电路和一个SRAM结构的配置存储单元组成。
1)可编程逻辑块(CLB):主要由逻辑函数发生器、触发器、数据选择器等电路组成。
2)输入/输出模块(IOB):主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓
冲器组成,每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。
3)可编程互连资源(PIR):由许多金属线段构成,这些金属线段带有可编程开关,通过
自动布线实现各种电路的连接。实现FPGA内部的CLB和CLB之间、CLB和IOB之间的连接。
5.什么叫功能仿真?什么叫时序仿真?、两者有什么区别?
功能仿真又称前仿真,是在不考虑器件延时的理想情况下的一种项目验证方法,通过功能仿真来验证一个项目的逻辑功能是否正确。
时序仿真又称模拟仿真或后仿真,是在考虑设计项目具体适配器件的各种延时的情况下的一种项目验证方法。时序仿真不仅测试逻辑功能,还测试目标器件最差情况下的时间关系。
注:功能仿真无延时(验证逻辑是否正确时用),时序仿真有延时(仿真出实实在在的芯片工作波形,实际芯片是有延时的)。
6.名词解释,写出下列缩写的中文(或者英文)含义:
1.VHDL 超高速集成电路硬件描述语言
(V ery-High-Speed Integrated Circuit HardwareDescription Language)
2.FPGA现场可编程逻辑门阵列
(Field-Programmable Gate Array)
3.RTL 寄存器传输级
(Register-Transfer Level)
4.SOPC 可编程片上系统
(System-on-a-Programmable-Chip)
5.EAB 嵌入式阵列块
(Embedded Array Block)
https://www.wendangku.net/doc/aa15727618.html,B 逻辑阵列块
(Logic Array Bloc k)
三、判断下列程序是否有错误,如有则指出错误所在,并给出完整程序。(20分)
下列程序是用VHDL语言编写的上升沿控制的D触发器(原理图如下)
library ieee;
use ieee.std_logic_unsigned.all;____use IEEE.std_logic_1164.all;___ --此D触发器没用到无符号算术运算,所以不用std_logic_unsigned 库。
entity dff1 is
port(clk,d:in std_logic;
Q:out std_logic) ____Q:out std_logic) ;___ --少了个“;”号
end dff1;
architecture one of d is ____architecure one of dff1 is___ --实体名不正确,dff1
begin
process ____process(clk)___ --VHDL中大小写无影响
begin
if clk ='1' ____if (clk’event and clk=’1’) then ___ --题目要求是上升沿控制的D触发器then Q<=d; ____Q <= d; ___ --then 一般紧接if语句
end if;
end process;
end d; ____end one;___ --结构体名不正确,one
四、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 : _out__ std_logic;
q : out std_logic_vector (___width-1___ downto 0));
end counter_n;
architecture behave of ____ counter_n ____ is
signal count : std_logic_vector (width-1 downto 0);
begin
process(clk, rst)
begin
if rst = '1' then
count <= ___ (others => ‘0’) _____; ―― 清零-–others=>’0’是比较专业的写法,可以 count <= “00000000”;,8位标准向量,直接每一位给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;
注:由于是电子稿,应注意下划线。
四、编程序(20分)
1.已知电路原理图如下,请用VHDL语言编写其程序
VHDL程序设计:(15分)
设计一数据选择器MUX,其系统模块图和功能表如下图所示。试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。
SEL COUT
00
01
10
11
OTHERS
A or B
A xor B
A nor B
A and B
“XX”
(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;
---------------------结构体behave描述-----------------------
architecture behave of myMux is --采用case语句描述
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 "11" => Cout <= Ain nor Bin;
when others => Cout <= "XX";
end case;
end process;
end behave;
---------------------结构体behave2描述-----------------------
architecture behave2 of myMux is --采用when else语句描述
begin
Cout <= Ain or Bin when sel="00" else
Ain xor Bin when sel="01" else
Ain and Bin when sel="10" else
Ain not Bin when sel="11" else
"XX" when sel=others ;
end behave2;
注:这里我只写了case语句和when else语句,if语句没写,并且我这是自己写的,与叶深上传的有点区别,建议参考叶深的资料。考试时我们写完一个VHDL,直接在结构体下补充另一个结构体就行。
2.(5分)用元件例化语句设计如图所示电路。元件为2输入与非门。
---------------------库引用---------------------------
library IEEE;
use IEEE.std_logic_1164.all;
---------------------实体声明-------------------------
entity yf4 is
port (
A, B, C, D :in std_logic;
Z :out std_logic
);
end yf4;
---------------------结构体行为描述-----------------------
architecture behave of yf4 is
--元件声明
component yf2
port (
A1, B1 :in std_logic;
C1 :out std_logic
);
end component;
signal x, y :std_logic; --定义两个中间信号变量
begin
U1 :yf2 port map (A, B, X);
U2 :yf2 port map (C, D, Y);
Y3 :yf2 port map (A1 => X, C1 => Z, B1 => Y);
end behave;
注:此题,在题目中已注明元件为两输入与非门,所以我们直接声明元件就行。如果没说,我们就的另外写一个两输入与非门的程序。
-----------------------------------------------
--两输入与非门程序
--file name :myNor.vhd
--------------------- --------------------------
---------------------库引用--------------------------- library IEEE;
use IEEE.std_logic_1164.all;
---------------------实体声明------------------------- entity myNor is
port (
a,b :in std_logic;
c :out std_logic
);
end myNor;
---------------------结构体行为描述----------------------- architecture behave of myNor is
begin
c <= not(a an
d b);
end behave;