版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、 填空题1、试举出两种可编程逻辑器件 CPLD 、 FPGA 。2、VHDL是否区分大小写? 不区分 。3、一段完整的VHDL语言程序通常包含 实体(entity) , 构造体(architecture),和 库(library)声明 3个基本部分。4、在一个实体的端口方向说明时,输入使用in表示,那么构造体内部不能再使用的输出是用 out 表示;双向端口是用 inout 表示;构造体内部可再次使用的输出是用 buffer 表示;5、一个构造体可以使用几个子结构,即相对比较独立的几个模块来构成。VHDL语言可以有以下3种形式的子结构描述语句: BLOCK 语句结构; PROCESS 语句结
2、构和SUBPROGRAMS结构。6、VHDL的客体,或称数据对象包括了常数、 变量variable 和 信号signal 。7、请列出三个VHDL语言的数据类型,如实数、位等。 整数 , 位矢量 , 布尔 。8、设D0为'0', D1为'1', D2为'1', D3为'0', D3 & D2 & D1 & D0的运算结果是 “0110” ,(D3 or D2)and(D1 and not D0)的运算结果是: 1 。12、VHDL的标识符名必须以(字母开头),后跟若干字母、数字或单个下划线构成,但最后不能为
3、(下划线),不能连续两个下划线相连。9、more_ _11标识符合法吗? 不合法 。8bit标识符合法吗? 不合法 。variable标识符合法吗? 不合法 。10、1_Digital标识符合法吗? 否 , 12 + 呢? 合法 。11、8digital标识符合法吗? 不合法 。12、digital_ _8标识符合法吗? 不合法 。12_bit标识符合法吗? 不合法 。signal标识符合法吗? 不合法 。 13、信号的代入通常用 <= ,变量用 := 。14、表示01;两值逻辑的数据类型是 bit(位) ,表示01Z等九值逻辑的数据类型是 std_logic(标准逻辑),表示空操作的数
4、据类型是 NULL 。19、定义一个信号a,数据类型为4位标准逻辑向量 signal a : std_logic_vector(3 downto 0) 定义一个变量b,数据类型为2位位向量 variable b : bit_vector(1 downto 0) 。15、将一个信号width定义为一个4位标准逻辑向量为 signal width : std_logic_vector(3 downto 0) 。16、定义一个变量a,数据类型为4位位向量 variable a : bit_vector(3 downto 0) 。17、<=是 小于等于 关系运算符,又是 赋值运算 操作符。18、
5、在VHDL的常用对象中, 信号 、 变量 可以被多次赋予不同的值, 常量 只能在定义时赋值。19、实体的端口模式用来说明数据、信号通过该端口的传输方向,端口模式有 in 、 Out 、 inout 、 buffer 。20、VHDL语言中std_logic类型取值 Z 表示高阻,取值 X 表示不确定。21、整型对象的范围约束通常用 range 关键词,位矢量用 downto/to 关键词。22、位类型的初始化采用(字符/字符串) 字符 、位矢量用 字符串 。23、进程必须位于 结构体 内部,变量必须定义于 进程/包/子程序 内部。24、并置运算符 & 的功能是 把多个位或位向量合并为一
6、个位向量 。25、进程执行的机制是敏感信号 发生跳变 。26、判断CLK信号上升沿到达的语句是 if clkevent and clk = 1 then .27、 IF 语句各条件间具有不同的优先级。28、任何时序电路都以 时钟 为驱动信号,时序电路只是在 时钟信号的边沿 到来时,其状态才发生改变。29、请分别列举一个常用的库和程序包 library ieee 、 use ieee.std_logic_1164.all 。30、/=是 不相等 操作符,功能是 在条件判断是判断操作符两端不相等 。31、赋值语句是(并行/串行) 并行 执行的,if语句是(并行/串行) 串行 执行的。32、 标准逻
7、辑(std_logic) 是一个具有八值逻辑的数据类型。33、IF语句根据指定的条件来确定语句执行顺序,共有3种类型: 用于门闩控制的IF语句、用于二选一控制的IF语句、用于多选择控制的IF语句。二、简答题1.信号和变量的比较1)赋值方式的不同: 变量:= 表达式; 信号 < = 表达式; 2)硬件实现的功能不同: 信号代表电路单元、功能模块间的互联, 代表实际的硬件连线; 变量代表电路单元内部的操作,代表暂 存的临时数据。3)有效范围的不同: 信号:程序包、实体、结构体;全局量。 变量:进程、子程序;局部量。4)赋值行为的不同: 信号赋值延迟更新数值、时序电路; 变量赋值立即更新数值、
8、组合电路。5)信号的多次赋值 a. 一个进程:最后一次赋值有效 b. 多个进程:多源驱动2. 信号(Signal)和变量(Variable)n VHDL处理静态数据的两种对象:constant和generic。n VHDL处理非静态数据的两种对象:信号和变量。n 常量和信号是全局的,既可以用于顺序代码,也可用于并发代码;n 变量只能在顺序代码中使用,相对于信号而言,变量只能是局部的,所以变量值不能传递到process、function和procedure外部。三、 编程题1、请补全以下二选一VHDL程序Entity mux isport(d0,d1,sel:in bit;q:out BIT )
9、; end mux;architecture connect of MUX is signal tmp1, TMP2 ,tmp3:bit; begin cale:block begin tmp1<=d0 and sel; tmp2<=d1 and (not sel) tmp3<= tmp1 and tmp2;q <= tmp3; end block cale; end CONNECT ; 2、根据下表填写完成一个3-8线译码器的VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder_3_to_8 IS
10、PORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC; y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END decoder_3_to_8;ARCHITECTURE rtl OF decoder_3_to_8 IS SIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0);BEGIN indata <= c & b & a;PROCESS (indata,g1,g2a,g2b) BEGIN IF (g1 = '1' AND g2a = '0' AND g2b =
11、39;0' ) THEN CASE indata IS WHEN "000"=> y <= "11111110" WHEN "001" => y <= "11111101" WHEN "010" => y <= "11111011" WHEN "011" => y <= "11110111" WHEN "100" => y <= "1110
12、1111" WHEN "101" => y <= "11011111" WHEN "110" => y <= "10111111" WHEN "111" => y <= "01111111" WHEN OTHERS=> y <= "XXXXXXXX" END CASE; ELSE y <= "11111111" END IF;END PROCESS;END rtl; 3、(
13、1)已知电路名为test1的输入信号为a(5:0),b(5:0)及时钟信号,输出为q(5:0),写出VHDL的实体描述。Entity test1 isPort(a,b:in std_logic_vector(5 downto 0); Clk:in std_logic; q :out std_logic_vector(5 downto 0);End ;(2)已知电路名为test2, 信号为双向Q(3:0) 及时钟信号,写出VHDL的实体描述。Entity test2 is Port( Clk:in std_logic; q :inout std_logic_vector(3 downto 0);
14、End ; (3) 用VHDL设计一个有使能端en的10分频器电路,写出该电路的实体描述。Entity fpq isPort(en:in std_logic; Clk:in std_logic; cp :out std_logic);End; (4)用VHDL设计一个有使能端en的12进制计数器电路,写出该电路的实体描述。或:Entity jsq2 is Port( en,Clk:in std_logic; q :out integer range 0 to 11 :=0);End ;Entity jsq1 is Port( en,Clk:in std_logic; q :out std_lo
15、gic_vector(3 downto 0);End;4、填写完成一个3-8线译码器的真值表,并写出其VHDL程序(并行语句)3-8译码器的真值表ena2a1a0y1000000000011001000000101010000001001011000010001100000100001101001000001110010000001111100000000xxx00000000entity tri_eight is port(a:in std_logic_vector (2 downto 0);en:in std_logic;y:outstd_logic_vector (7 downto 0)
16、;end tri_eight;architecture a of tri_eight is signal sel:std_logic_vector (3 downto 0);beginsel(0) <= a(0);sel(1) <= a(1);sel(2) <= a(2);sel(3) <= en;with sel selecty <= "00000001" when "1000","00000010" when "1001","00000100" when&quo
17、t;1010","00001000" when"1011","00010000" when"1100","00100000" when"1101","01000000" when"1110","10000000" when"1111","00000000" whenothers;end a;5、根据下表填写完成一个3-8线译码器的VHDL程序(顺序语句)LIBRARY
18、 IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder_3_to_8 IS PORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC; y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END decoder_3_to_8;ARCHITECTURE rtl OF decoder_3_to_8 IS SIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0);BEGIN indata <= c & b & a;PROCESS (indata,g1,g2a,g2b) 不能
19、少! BEGIN IF (g1 = '1' AND g2a = '0' AND g2b = '0' ) THEN CASE indata IS WHEN "000"=> y <= "11111110" WHEN "001" => y <= "11111101" WHEN "010" => y <= "11111011" WHEN "011" => y <= &q
20、uot;11110111" WHEN "100" => y <= "11101111" WHEN "101" => y <= "11011111" WHEN "110" => y <= "10111111" WHEN "111" => y <= "01111111" WHEN OTHERS=> y <= "XXXXXXXX" END CASE; E
21、LSE y <= "11111111" END IF;END PROCESS;END rtl; 6、根据已给出的二-十(BCD)进制优先权编码器功能表,试写出其VHDL程序。二-十(BCD)进制优先权编码器功能表输入输出I1I2I3I4I5I6I7I8I9Y3Y2Y1Y01111111111111XXXXXXXX00110XXXXXXX010111XXXXXX0111000XXXXX01111001XXXX011111010XXX0111111011XX01111111100X0111111111010111111111110entity prior isport(d
22、 : in std_logic_vector(9 downto 1);q : out std_logic_vector(3 downto 0);end prior;architecture behavior of prior is beginprocess(d)24beginif d = "111111111" thenq <= "1111"elsif d(9) = '0' thenq <= "0110"elsif d(8) = '0' thenq <= "0111"
23、;elsif d(7) = '0' thenq <= "1000"elsif d(6) = '0' thenq <= "1001"elsif d(5) = '0' thenq <= "1010"elsif d(4) = '0' thenq <= "1011"elsif d(3) = '0' thenq <= "1100"elsif d(2) = '0' thenq <
24、;= "1101"elsif d(1) = '0' thenq <= "1110"end if;end process;end behavior;8-3优先编码器library ieee ;use ieee.std_logic_1164.allentity coder isport(i : in std_logic_vector(0 to 7)y: out std_logic_vector(1 to 3);end coder ;architecture a1 or coder isbeginif (i(7)=1) then y<
25、;=“111”;elsif (i(6)=1) then y<=“110”;elsif (i(5)=1) then y<=“101”;elsif (i(4)=1) then y<=“100”; elsif (i(3)=1) then y<=“011”;elsif (i(2)=1) then y<=“010”;elsif (i(1)=1) then y<=“001”;else y<=“000”;end if;end a1;7、根据一下四选一程序的结构体部分,完成实体程序部分entity MUX4 is port( s:in std_logic_vector
26、(1 downto 0); d:in std_logic_vector(3 downto 0); y:out std_logic ); end MUX4; architecture behave of MUX4 isbeginprocess(s)beginif (s="00") theny<=d(0); elsif (s="01") theny<=d(1); elsif (s="10") theny<=d(2); elsif (s="11") theny<=d(3); elsenull; e
27、nd if;end process;end behave; 8、编写一个数值比较器VHDL程序的进程(不必写整个结构框架),要求使能信号g低电平时比较器开始工作,输入信号p = q,输出equ为0,否则为1。process(p,q)beginif g='0' thenif p = q thenequ <= '0' else equ <= '1' end if;else equ <= '1' end if;end process;9、图中给出了4位逐位进位全加器,请完成其VHDL程序。library IEEE;us
28、e IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity full_add isport (a,b: instd_logic_vector (3 downto 0); carr: inout std_logic_vector (4 downto 0);sum: outstd_logic_vector (3 downto 0);end full_add;architecture full_add_arch of full_add iscomponent adder p
29、ort (a,b,c:instd_logic;carr: inoutstd_logic;sum: out std_logic );end component;begincarr(0)<='0'u0:adder port map(a(0),b(0),carr(0),carr(1),sum(0);u1:adder port map(a(1),b(1),carr(1),carr(2),sum(1); u2:adder port map(a(2),b(2),carr(2),carr(3),sum(2); u3:adder port map(a(3),b(3),carr(3),ca
30、rr(4),sum(3); end full_add_arch;10、完成以下n位全加法器代码(并行语句:FOR- GENERATE语句)第一步:一位全加法器的VHDL程序:library ieee;use ieee.std_logic_1164.all;entity fadder isport(x,y,cin: in std_logic; sum,cout: out std_logic);END fadder ;architecture ab of fadder isbeginsum<=(x xor y) xor cin;cout<=(x and y) or (x xor y)
31、and cin);end ab;第二步: library ieee;use ieee.std_logic_1164.all;entity adder4 isGeneric(n:integer:=4) port(a,b:in std_logic_vector(n-1 downto 0); cin:in std_logic ; sum:out std_logic_vector(n-1 downto 0) cout: out std_logic );end adder4;architecture struct of adder4 iscomponent fadder-一位全加法器元件调用port(
32、x,y,cin: in std_logic;sum,Cout :out std_logic);end component; signal c:std_logic_vector(n downto 0);-中间信号量 begin c(0)<=cin; fulladd: for I in 0 to n-1 generate fax: fadder port map(a(I), b(I), c(I), sum(I), c(I+1); end generate fulladd;cout<=c(chigh);end struct;用LOOP语句设计n位全法器(顺序语句书本P87)11、设计异或
33、门逻辑:如下异或门,填写右边的真值表。ABY000011101110其表达式可以表示为:(此项5分) 这一关系图示如下:library ieee;use ieee.std_logic_1164.all; entity yihuo1 isport(a,b:in std_logic;y:out std_logic);end yihuo1; architecture yihuo1_behavior of yihuo1 isbegin process(a,b) y<=a xor b;begin (第2种写法)if a=b theny<='0'elsey<='1
34、'end if;end process; end yihuo1_behavior; 12、用IF语句编写一个二选一电路,要求输入a、b, sel为选择端,输出q。Entity sel2 isPort (a,b : in std_logic;sel : in std_logic;q : out std_logic);End sel2;Architecture a of sel2 isbeginif sel = 0 thenq <= a;elseq <= b;end if;end a;13. 分频器1)n分频器设计library IEEE;use IEEE.STD_LOGIC_
35、1164.ALL;1. use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity fpq_n isgeneric (n:integer :=8); generic (n:integer :=数值); Port ( clk : in STD_LOGIC; cp : out STD_LOGIC:='0');end fpq_n;architecture Behavioral of fpq_n issignal a:integer range 0 to (n-1);beginprocess(clk)begin
36、 if clk'event and clk='1' thenif a=n-1 thencp<='1'a<=0;else cp<='0' a<=a+1;end if;end if;end process;end Behavioral;2)已知输入频率设计要求得到的时钟信号的分频器3)An分频器设计(25)第一步:library IEEE;-2分频器设计use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED
37、.ALL;entity fp2 is Port ( clk1 : in STD_LOGIC:='0' cp1 : out STD_LOGIC:='0');end fp2;architecture Behavioral of fp2 issignal a:integer :=0;beginprocess(a,clk1)beginif clk1'event and clk1='1' thenif a=1 then cp1<='0'a<=0;else a<=a+1;cp1<='1'end
38、if;end if;end process;end Behavioral; 第二步:library IEEE;-25分频器设计use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity fp2n5 isgeneric (size:integer:= 5); Port ( clk : in STD_LOGIC:='0' cp : out STD_LOGIC:='0');end fp2n5;architecture Behavioral
39、 of fp2n5 iscomponent fp2 Port ( clk1 : in STD_LOGIC:='0' cp1 : out STD_LOGIC:='0');end component;signal x: std_logic_vector( 0 to size);beginx(0)<=clk;aa:for i in 0 to size-1 generatebb:fp2 port map (x(i),x(i+1);end generate;cp<=x(x'high);end Behavioral;14、编写一个4位加法计数器VHDL程
40、序的进程(不必写整个结构框架),要求复位信号reset低电平时计数器清零,变高后,在上升沿开始工作;输入时钟信号为clk,输出为q。Process(reset,clk)beginif reset = 0 thenq <= “0000”;elsif clkevent and clk = 1 thenq <= q + 1;end if;end process;15、填写完成一个8-3线编码器的真值表,并写出其VHDL程序8 -3线编码器真值表enby0y1y21000000000001000000100011000001000101000010000111000100001001001
41、000001011010000001101100000001110xxxxxxxx高阻态entity eight_tri is port(b:in std_logic_vector(7 downto 0);en:in std_logic;y:outstd_logic_vector(2 downto 0);end eight_tri;architecture a of eight_tri is signal sel: std_logic_vector(8 downto 0);beginsel<=en & b;y<= “000” when (sel=”100000001”)el
42、se“001” when (sel=”100000010”)else“010” when (sel=”100000100”)else“011” when (sel=”100001000”)else“100” when (sel=”100010000”)else“101” when (sel=”100100000”)else“110” when (sel=”101000000”)else“111” when (sel=”110000000”)else“zzz”;end a;16、用IF语句编写一个四选一电路,要求输入d0d3, s为选择端,输出y。entity MUX4 is port(s:in
43、 std_logic_vector(1 downto 0);d:in std_logic_vector(3 downto 0);y:out std_logic);end MUX4; architecture behave of MUX4 isbeginprocess(s)beginif (s="00") theny<=d(0); elsif (s="01") theny<=d(1); elsif (s="10") theny<=d(2); elsif (s="11") theny<=d(3)
44、; elsenull; end if;end process;end behave; 17、编写一个数值比较器VHDL程序的进程(不必写整个结构框架),要求使能信号g低电平时比较器开始工作,输入信号p = q,输出equ为0,否则为1。process(p,q)beginif g='0' thenif p = q thenequ_tmp <= '0'else equ_tmp <= '1'end if;else equ_tmp <= '1'end if;end process;18.用VHDL设计一个顺序语句共阴7段
45、译码电路library ieee; use ieee.std_logic_1164.all; entity smg is port(a:in std_logic_vector(3 downto 0); led7s:out std_logic_vector(6 downto 0); end; architecture one of smg is begin process(a)
46、begin case a is when"0000"=>led7s<="0111111" when"0001"=>led7s<="0000110" when"0010"=>led7s<="1011011" when"0011"=>led7s<="1001111" when"0100"=>
47、;led7s<="1100110" when"0101"=>led7s<="1101101" when"0110"=>led7s<="1111101" when"0111"=>led7s<="0000111" when"1000"=>led7s<="1111111" when"1001"=>
48、;led7s<="1101111" when"1010"=>led7s<="1110111" when"1011"=>led7s<="1111100" when"1100"=>led7s<="0111001" when"1101"=>led7s<="1011110" when"1110"=>
49、;led7s<="1111001" when"1111"=>led7s<="1110001" when others=>null; end case;用VHDL语言的并行语句设计一个共阳极7段译码电路。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity decoder is port(hex: in std_logic_vector(3 downt
50、o 0); led : out std_logic_vector(6downto 0); end decoder; architecture rtl of decoder is begin with hex select LED<= "1111001" when "0001", -1 "0100100" when "0010", -2 "0110000" when "0011", -3 "0011001" when "0100",
51、 -4 "0010010" when "0101", -5 "0000010" when "0110", -6 "1111000" when "0111", -7 "0000000" when "1000", -8 "0010000" when "1001", -9 "0001000" when "1010", -A "0000011"
52、when "1011", -b "1000110" when "1100", -C "0100001" when "1101", -d "0000110" when "1110", -E "0001110" when "1111", -F "1000000" when others; -0 end rtl;19、根据时钟频率设计记数分频器和扫描分频器10000分频器 fp4library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械手液压课程设计
- 机械工程综合课程设计
- 机械大学生课程设计
- 机械变速器课程设计
- 机械原理设计课程设计
- 机械动力简单课程设计
- 2024新教材高中化学 第五章 化工生产中的重要非金属元素 第二节 第二课时 氨和铵盐教案 新人教版第二册
- 2024年八年级历史下册 第五单元 人民生活水平和综合国力的提高 第16课 人民生活水平的提高教学设计 华东师大版
- 高中地理 第三章 地理信息技术的应用 3.3 地理信息系统的应用教案 中图版必修3
- 2024年五年级数学上册 四 小数混合运算 2问题解决教案 西师大版
- 乳腺疏通课件
- 网络钓鱼攻击如何分辨与防范
- 大数据技术在生态环境保护中的应用
- 待岗学习心得体会
- Excel常用办公技巧
- 强奸罪起诉状
- 新任村干部 财务培训课件
- 中国钱币的演变历史
- 2024年盘锦北方沥青股份有限公司招聘笔试参考题库含答案解析
- 腹部手术后的康复护理指导
- 中国动态血糖监测临床应用指南
评论
0/150
提交评论