




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
思考题:进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用?进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用? 进程的“敏感信号表”也称敏感表,是进程的激活条件,可由一个或多个信号组成,各信号间以“,”号分隔。当敏感信号表中的任一个信号有事件发生,即发生任意变化,此时,进程被激活,进程中的语句将从上到下逐句执行一遍,当最后一条语句执行完毕之后,进程即进入等待挂起状态,直到下一次敏感表中的信号有事件发生,进程再次被激活,如此循环往复。vhdl复习题1 什么是vhdl?简述vhdl的发展史。答: vhdl是美国国防部为电子项目设计承包商提供的,签定合同使用的,电子系统硬件描述语言。1983年成立vhdl语言开发组,1987年推广实施,1993年扩充改版。vhdl是ieee标准语言,广泛用于数字集成电路逻辑设计。2 简述vhdl设计实体的结构。答:实体由实体名、类型表、端口表、实体说明部分和实体语句部分组成。根据ieee标准,实体组织的一般格式为:entity 实体名 is generic(类型表); -可选项 port(端口表); -必需项 实体说明部分; -可选项 begin 实体语句部分;end entity 实体名;3 分别用结构体的3种描述法设计一个4位计数器。答: 用行为描述方法设计一个4位计数器如下,其它描述方法,读者可自行设计。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counta is port (clk,clr,en:in std_logic; qa,qb,qc,qd:out std_logic);end counta;architecture example of counta issignal count_4:std_logic_vector (3 downto 0);begin qa = count_4(0); qb = count_4(1); qc = count_4(2); qd = count_4(3);process (clk,clr) begin if (clr = 1 ) then count_4 = 0000; elsif (clkevent and clk = 1 ) then if (en = 1 ) then if (count_4 = 1111) then count_4 = 0000; else count_4 = count_4+ 1; end if; end if; end if; end process;end example;1 什么叫对象?对象有哪几个类型?答:在vhdl语言中,凡是可以赋于一个值的客体叫对象(object)。vhdl对象包含有专门数据类型,主要有4个基本类型:常量(constant)、信号(signal)、变量(variable)和文件(files)。2 vhdl语言定义的标准类型有哪些?答 vhdl语言标准所定义的标准数据类型(1) 整数类型(integer type)(2) 实数类型或浮点类型(real type floating type)(3) 位类型(bit type)(4) 位矢量类型(bit_vector type)(5) 布尔类型(boolean type)(6) 字符类型(character type)(7) 时间类型或物理类型(time type physical type)(8) 错误类型(note,warniing,error,failure type)(9) 自然数、整数类型(natural type)(10) 字符串类型(tring type)3 简述vhdl语言操作符的优先级。答: 在表2.1中,取反和取绝对值优先级较高,与、或逻辑运算的优先级低于算术运算的优先级。4 哪3种方法可用来进行类型转换?答:进行不同类型的数据变换,有3种方法:类型标记法、函数转换法和常数转换法。1 什么叫进程?简述进程的工作方式。答:进程(process)是由外部信号触发执行的一段程序。进程语句是并行处理语句,即各个进程是同时处理的,在结构体中多个process语句是同时并发运行的。在进程内部是顺序执行的。process语句在vhdl程序中,是描述硬件并行工作行为的最常用、最基本的语句。进程process语句中一般带有几个信号量例表,称为该进程的敏感量表。这些信号无论哪一个发生变化都将启动process进程。一旦启动,进程process中的程序将从上到下顺序执行一遍,由新变化的量引导进程产生变化结果输出。当进程的最后一个语句执行完成后,就返回到进程开始处,等待敏感量的新变化,引发进程的再一次执行。周而复始,循环往复,以至无穷。这就是进程的执行过程。2 什么叫模块?区分模块与进程。答:模块(block)语句是结构体中积木化设计语言,适用于复杂项目设计。block块是一个独立的子结构,可以包含port语句、generic语句,允许设计者通过这两个语句将block块内的信号变化传递给block块的外部信号。同样,也可以将block块的外部信号变化传递给block块的内部信号。对vhdl语言中的block模块进行仿真时,block模块中所描述的各个语句是可以并发执行的,和模块中的语句书写顺序无关。进程语句是一段程序,这段程序是顺序执行的。3 用结构描述法和generate语句设计一个8位移位寄存器。答:library ieee;use ieee.std_logic_1164.all;entity shift_register isport(a,clk: in std_logic; b: out std_logic);end entity shift_regester; architecture eight_bit_shift_register of shift_register iscomponent dff - dff元件调用 port(a,clk: in std_logic; b: out std_logic); end component; signal x: std_logic_vector(0 to 4);begin x(0) = a; dff1:dff port map (x(0),clk,z(1); dff2:dff port map (x(1),clk,z(2);dff3:dff port map (x(2),clk,z(3); dff4:dff port map (x(3),clk,z(4);dff5:dff port map (x(4),clk,z(5);dff6:dff port map (x(5),clk,z(6);dff7:dff port map (x(6),clk,z(7);dff4:dff port map (x(7),clk,z(8); b=x(8);end architecture eight_bit_shift_register;1 设计一个加法器, 答:半加器及全加器vhdl程序设计(1)。library ieee;use ieee.std_logic_1164.all;entity full_adder is port (a,b,cin:in std_logic; sum,co:out std_logic);end full_adder;architecture full1 of full_adder iscomponent half_adder port (a,b:in std_logic; s,co:out std_logic);end component;signal u0_co,u0_s,u1_co:std_logic;begin u0:half_adder port map (a,b,u0_s,u0_co); u1:half_adder port map (u0_s,cin,sum,u1_co); co = u0_co or u1_co;end full1;半加器及全加器vhdl程序设计(2)。library ieee;use ieee.std_logic_1164.all;entity half_adder is port (a,b:in std_logic; s,co:out std_logic);end half_adder;architecture half1 of half_adder issignal c,d:std_logic;begin c = a or b; d = a nand b; co = not d; s = c and d;end half1;2 简述层次化设计的过程。答:层次化设计是指对于一个大型设计任务,将目标层层分解,在各个层次上分别设计的方法。有些设计,在一些模块的基础上,通过搭建积木的方法进行设计。有人称,在整个设计任务上进行行为描述的设计方法,称为高层次设计,而从事某一模块、某一元件行为设计称为底层设计方法。3 什么是库,程序包,子程序,过程调用,函数调用?答:库(libraries)和程序包(package)用来描述和保存元件、类型说明、函数、模块等,以便在其他设计中可随时引用它们。库(libraries)是用来存储和放置可编译的设计单元的地方,通过其目录可查询、调用。设计库中的设计单元(实体说明、结构体、配置说明、程序包说明和程序包体)可以用作其他vhdl描述的资源。函数和过程统称为子程序。子程序由过程和函数组成。在子程序调用过程中,过程能返回多个变量,函数能返回一个变量。若子程序调用是一个过程,就称为过程调用;若子程序调用是一个函数,则称为函数调用。过程调用和函数调用都是子程序调用。函数的参数都是输入参数。过程的参数有输入、输出和双向参数。函数有顺序函数、并行函数。过程有顺序过程、并行过程。1 clk信号怎样用vhdl语言描述?答:时钟信号的上升沿的描述:if clkevent and clk = 1 then ;时钟信号的下降沿的描述: if clk event and clk = 1 then ;2 异步复位怎样用vhdl语言描述?答:当复位信号低电平有效时,vhdl的描述为:if reset = 0 then ;当复位信号高电平有效时, vhdl的描述为:if reset =1 then ;3 设计一个8位循环移位寄存器。答: 8位循环计寄存器的vhdl参考程序设计如下: library ieee;use ieee.std_logic_1164.all;entity circleshift8 is port (seldata:in std_logic_vector(2 downto 0); clr,clk: in std_logic; sel: out std_logic_vector(7 downto 0);end circleshift8;architecture sample of circleshift8 isbeginprocess(clk,clr) beginif (clr=1)then selselselselselselselsel sel=00000000;end case; end if; end process;end sample;4. 设计一个六十进制计数器。答: 60进制计数器的vhdl参考程序设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;-* entity counter60 is port( cp:in std_logic; bin:out std_logic_vector(6 downto 0); s:in std_logic; clr:in std_logic; ec:in std_logic; cy60:out std_logic ); end counter60;-*architecture b of counter60 is signal q:std_logic_vector(6 downto 0); signal rst,dly:std_logic;begin process(rst,cp) begin if rst=1 then q=0000000; - cy(60)=0; elsif cpevent and cp=1 then dly=q(5); if ec=1then if q=59 then q=0000000; else q=q+1; end if; else q=q; end if; end if; end process; cy60= not q(5) and dly; rst= clr; bin=q when s=1 else 1111111;end b;5. 设计一个八位编码器。答: 八位编码器的vhdl参考程序设计如下:library ieee;use ieee.std_logic_1164.all;entity priotyencoder is port (d : in std_logic_vector (7 downto 0); e1: in std_logic; gs,e0: out bit std_logic; q : out std_logic_vector(2 downto 0);end priotyencoder;architecture encoder of prioty encoder isbegin p1: process ( d )begin if ( d(0) = 0 and e1 = 0 ) then y = 111; gs = 0 ; e0 = 1 ; elsif (d(1) = 0 and e1 = 0 ) then q = 110; gs = 0 ; e0 = 1 ; elsif (d(2) = 0 and e1 = 0 ) then q = 101 ; gs = 0 ; e0 = 1 ; elsif (d(3) = 0 and e1= 0 ) then q = 100 ; gs = 0 ; e0 = 1 ; elsif (d(4) = 0 and e1= 0 ) then q = 011 ; gs = 0 ; e0 = 1 ; elsif (d(5) = 0 and e1= 0 ) then q = 010 ; gs = 0 ; e0 = 1 ; elsif (d(6) = 0 and e1 = 0 ) then q = 001 ; gs= 0 ; e0= 1 ; elsif (d(7) = 0 and e1 = 0 ) then q = 000 ; gs = 0 ;e0 = 1 ; elsif (e1 = 1 ) then q = 111 ; gs = 1 ; e0 = 1 ; elsif (d = 1111 1111 and e1 = 0 ) then q = 111 ; gs = 1 ; e0 = 0 ; end if; end process p1; end encoder;6. 设计一个三八译码器。答: 三八译码器的vhdl参考程序设计如下:library ieee;use ieee.std_logic_1164.all;entity decoder3_8 is port (a,b,c,g1,g2a,g2b:in std_logic; y:out std_logic_vector(7 downto 0);end decoder3_8;architecture rtl of decoder3_8 issignal indata:std_logic_vector (2 downto 0);begin indata y y y y y y y y y = xxxxxxxx ; end case; else y = 11111111 ; end if; end process;end rtl;五、改正以下程序中的错误,简要说明原因,并指出可综合成什么电路。1. library ieee;use ieee.std_logic_1164.all;entity d_flip_flop is port(d, clk: in std_logic;q: out std_logic);end d_flip_flop;architecture rtl of d_flip_flop isbegin if clkevent and clk=1 then q=d; end if;end rtl;2. library ieee;use ieee.std_logic_1164.all;entity d_latch is port(d, ena: in std_logic;q: out std_logic);end d_latch;architecture rtl of d_latch isbegin if ena = 1 then q=d; end if;end rtl; 3library ieee;use ieee.std_logic_1164.all;entity test is port(d, clk: in std_logic;q: out std_logic);end test;architecture rtl of test isbegin process(clk) begin wait until clkevent and clk=1 q q q = d2; end case; end process;end rtl;5.library ieee;use ieee.std_logic_1164.all;entity test is port(d1, d2: in std_logic;sel: in std_logic;q: out std_logic);end test;architecture rtl of test isbegin process(d1, d2, sel) begin q=d1 when sel = 0 else d2; end process;end rtl;6.library ieee;use ieee.std_logic_1164.all;entity test is port(clk: in std_logic;count: buffer std_logic_vector(3 downto 0);end test;architecture rtl of test isbegin process(clk) begin if clkevent and clk=1 then count q q = 0 ; end case ; end test ; 【参考答案】: case语句应该存在于进程process内。2 已知start为std_logic类型的信号,sum是integer类型的信号,请判断下面的程序片断: process (start) begin for i in 1 to 9 loop sum := sum + i ; end loop ; end process ; 【参考答案】: sum是信号,其赋值符号应该由“:=”改为“=”。3 已知q为std_logic类型的输出端口,请判断下面的程序片断: architecture test of test is begin signal b :std_logic ; q = b ; end test ; 【参考答案】: 信号signal的申明语句应该放在begin语句之前。4 已知a和b均为std_logic类型的信号,请判断下面的语句: a = 0 ; b = x ; 【参考答案】: 不定态符号应该由小写的x改为大写的x。5 已知a为integer类型的信号,b为std_logic类型的信号,请判断下面的程序片断: architecture test of test is begin b q q q q = d ; end case ; 【参考答案】: case语句缺“when others”语句。 简述top-down设计方法及其基本步骤。【参考答案】: 所谓top-down的设计过程是指从系统硬件的高层次抽象描述向最底层物理描述的一系列转换过程。具体讲这一过程由功能级、行为级描述开始;寄存器传输(rtl)级描述为第一个中间结果;再将rtl级描述由逻辑综合得到网表(net-list)或电路图;由网表即可自动生成现场可编程门阵列(fpga)/复杂可编程逻辑器件(cpld)或专用集成电路(asic),从而得到电路与系统的物理实现。3 请从申明格式、赋值符号、赋值生效时间、作用范围等方面对信号和变量进行比较分析。【参考答案】: 申明时关键字不一样,变量为:variable;信号为:signal。但申明时赋初值均用“:”符号。赋值符号不同:信号赋值用“”;变量赋值用“:”。赋值生效时间:信号赋值延时后生效;变量赋值立即生效。声明引用范围:信号在构造体内(进程外)申明,整个构造体内有效;变量主要在进程内申明,只在进程内有效。2 vhdl程序主要有三种描述方式:行为描述方式、rtl描述方式、结构描述方式。3 vhdl程序中数值的载体称为对象。vhdl中有四种对象,分别是:常量(constant)、变量(variable)、信号(signal)、文件(file)。20、在vhdl中,(d )的数据传输是立即发生的,不存在任何延时的行为。 a、信号; b、常量; c、数据; d、变量21、在vhdl中,(a )的数据传输是不是立即发生的,目标信号的赋值需要一定的延时时间。 a、信号; b、常量; c、数据; d、变量22、在vhdl中,为目标变量赋值的符号是(c )。 a、=: ; b、= ; c、:= ; d、=23、在vhdl中,为目标信号赋值的符号是(d )。 a、=: ; b、= ; c、:= ; d、=24、在vhdl中,定义信号名时,可以用( c)符号为信号赋初值。 a、=: ; b、= ; c、:= ; d、=设计一数据选择器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; - 选择信号输入 ain, bin : in std_logic_vector; - 数据输入 cout : out std_logic_vector(1 downto 0) ); - 数据输出end mymux;eda技术与项目训练选择题1. 一个项目的输入输出端口是定义在 a 。 a. 实体中 b. 结构体中 c. 任何位置 d. 进程体 2. 描述项目具有逻辑功能的是 b 。 a. 实体 b. 结构体 c. 配置 d. 进程 3. 关键字architecture定义的是 a 。a. 结构体 b. 进程 c. 实体 d. 配置 4. maxplusii中编译vhdl源程序时要求 c 。a.文件名和实体可不同名 b.文件名和实体名无关 c. 文件名和实体名要相同 d. 不确定 5. 1987标准的vhdl语言对大小写是 d 。 a. 敏感的 b. 只能用小写 c. 只能用大写 d. 不敏感 6. 关于1987标准的vhdl语言中,标识符描述正确的是 a 。 a. 必须以英文字母开头 b.可以使用汉字开头 c.可以使用数字开头 d.任何字符都可以 7. 关于1987标准的vhdl语言中,标识符描述正确的是 b 。 a. 下划线可以连用 b. 下划线不能连用 c. 不能使用下划线 d. 可以使用任何字符 8. 符合1987vhdl标准的标识符是 a 。 a. a_2 b. a+2 c. 2a d. 229. 符合1987vhdl标准的标识符是 a 。 a. a_2_3 b. a_2 c. 2_2_a d. 2a 10. 不符合1987vhdl标准的标识符是 c 。 a. a_1_in b. a_in_2 c. 2_a d. asd_1 11. 不符合1987vhdl标准的标识符是 d 。 a. a2b2 b. a1b1 c. ad12 d. %50 12. vhdl语言中变量定义的位置是 d 。 a. 实体中中任何位置 b. 实体中特定位置 c. 结构体中任何位置 d. 结构体中特定位置 13. vhdl语言中信号定义的位置是 d 。 a. 实体中任何位置 b. 实体中特定位置 c. 结构体中任何位置d. 结构体中特定位置14. 变量是局部量可以写在 b 。 a. 实体中 b. 进程中 c. 线粒体 d. 种子体中 15. 变量和信号的描述正确的是 a 。 a. 变量赋值号是:= b. 信号赋值号是:= c. 变量赋值号是= d. 二者没有区别 16. 变量和信号的描述正确的是 b 。 a. 变量可以带出进程 b. 信号可以带出进程 c. 信号不能带出进程 d. 二者没有区别17. 关于vhdl数据类型,正确的是 d 。 a. 数据类型不同不能进行运算 b. 数据类型相同才能进行运算 c. 数据类型相同或相符就可以运算 d. 运算与数据类型无关 18. 下面数据中属于实数的是 a 。 a. 4.2 b. 3 c. 1 d. “11011” 19. 下面数据中属于位矢量的是 d 。a. 4.2 b. 3 c. 1 d. “11011” 20. 关于vhdl数据类型,正确的是 。 a. 用户不能定义子类型 b. 用户可以定义子类型 c. 用户可以定义任何类型的数据 d. 前面三个答案都是错误的 21. 可以不必声明而直接引用的数据类型是 c 。 a. std_logic b. std_logic_vector c. bit d. 前面三个答案都是错误的 22. std_logig_1164中定义的高阻是字符 d 。 a. x b. x c. z d. z 23. std_logig_1164中字符h定义的是 a 。 a. 弱信号1 b. 弱信号0 c. 没有这个定义 d. 初始值 24. 使用std_logig_1164使用的数据类型时 b 。 a.可以直接调用 b.必须在库和包集合中声明 c.必须在实体中声明 d. 必须在结构体中声明 25. 关于转化函数正确的说法是 。 a. 任何数据类型都可以通过转化函数相互转化 b. 只有特定类型的数据类型可以转化 c. 任何数据类型都不能转化 d. 前面说法都是错误的 26. vhdl运算符优先级的说法正确的是 c 。 a. 逻辑运算的优先级最高 b. 关系运算的优先级最高 c. 逻辑运算的优先级最低 d. 关系运算的优先级最低 27. vhdl运算符优先级的说法正确的是 a 。 a. not的优先级最高 b. and和not属于同一个优先级 c. not的优先级最低 d. 前面的说法都是错误的 28. vhdl运算符优先级的说法正确的是 d 。 a. 括号不能改变优先级 b. 不能使用括号 c. 括号的优先级最低 d. 括号可以改变优先级 29. 如果a=1,b=0,则逻辑表达式(a and b) or( not b and a)的值是 b 。 a. 0 b. 1 c. 2 d. 不确定 30. 关于关系运算符的说法正确的是 。 a. 不能进行关系运算 b. 关系运算和数据类型无关 c. 关系运算数据类型要相同 d. 前面的说法都错误 31. 转换函数to_bitvector(a)的功能是 。 a. 将stdlogic_vector转换为bit_vector b. 将real转换为bit_vector c. 将time转换为bit_vector d. 前面的说法都错误 32. vhdl中顺序语句放置位置说法正确的是 。 a.可以放在进程语句中 b. 可以放在子程序中 c. 不能放在任意位置 d. 前面的说法都正确 33. 不属于顺序语句的是 b 。 a. if语句 b. loop语句 c. process语句 d. case语句 34. 正确给变量x赋值的语句是 b 。 a. x=a+b; b. x:=a+b; c. x=a+b; d. 前面的都不正确 35. eda的中文含义是 a 。 a. 电子设计自动化 b. 计算机辅助计算 c. 计算机辅助教学 d. 计算机辅助制造 36. 可编程逻辑器件的英文简称是 。 a. fpga b. pla c. pal d. pld 37. 现场可编程门阵列的英文简称是 。 a. fpga b. pla c. pal d. pld 38. 基于下面技术的pld器件中允许编程次数最多的是 。 a. flash b. eerom c. sram d. prom 39. 在eda中,isp的中文含义是 。 a. 网络供应商 b. 在系统编程 c. 没有特定意义 d. 使用编程器烧写pld芯片 40. 在eda中,ip的中文含义是 。 a. 网络供应商 b. 在系统编程 c. 没有特定意义 d. 知识产权核41. epf10k20tc144-4具有多少个管脚 a 。 a. 144个 b. 84个 c. 15个 d. 不确定 42. epf10k20tc144-x器件,如果x的值越小表示 。 a. 器件的工作频率越小 b. 器件的管脚越少 c. 器件的延时越小 d. 器件的功耗越小 43. 如果a=1,b=1,则逻辑表达式(a xor b) or( not b and a)的值是 a 。 a. 0 b. 1 c. 2 d. 不确定 44. 执行下列语句后q的值等于 b 。signal e: std_logic_vector (2 to 5);signal q: std_logic_vector (9 downto 2);e1, 4=0, others=1);qe (2), 4=e (3), 5=1, 7=e (5), others=e (4);a “11011011” b. “00101101” c. “11011001” d. “00101100” 45. vhdl文本编辑中编译时出现如下的报错信息error: vhdl syntax error: signal declaration must have ;,but found begin instead. 其错误原因是 a 。a. 信号声明缺少分号。b. 错将设计文件存入了根目录,并将其设定成工程。c. 设计文件的文件名与实体名不一致。 d. 程序中缺少关键词。46. vhdl文本编辑中编译时出现如下的报错信息error: vhdl syntax error: choice value length must match selector expression value length 其错误原因是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国男性护理液行业市场全景分析及前景机遇研判报告
- 中班美术活动变脸
- 无创呼吸机应用和护理
- 智慧教育发展
- 煤矿机电运输事故原因及控制对策探究
- 物业品质管理与培训
- 车用尿素研发生产与销售合作协议书
- 房地产租赁合同补充协议书
- 员工培训计划表
- 知识产权侵权代理授权协议
- 2025年河北交通投资集团公司招聘笔试题库含答案解析
- 机场行业安全生产培训
- 医药代表的临床经验分享
- 《大数据导论》期末考试复习题库(含答案)
- 艺术家进校园活动安排计划
- (电大)国开大学2024年秋《铸牢中华民族共同体意识》试卷1-3参考答案
- 2025版国家开放大学法律事务专科《宪法学》期末考试总题库
- 【MOOC】融合新闻:通往未来新闻之路-暨南大学 中国大学慕课MOOC答案
- JGJT46-2024《施工现场临时用电安全技术标准》条文解读
- 防雷应急演练方案
- 半结构化面试题100题
评论
0/150
提交评论