EDA与VHDL断改错题集_第1页
EDA与VHDL断改错题集_第2页
EDA与VHDL断改错题集_第3页
EDA与VHDL断改错题集_第4页
EDA与VHDL断改错题集_第5页
免费预览已结束,剩余19页可下载查看

下载本文档

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

文档简介

1、一、 判断对错(并改正)1、CONSTANT T2:std_logic = 0; ( 错 ) 改正:把= 换为 := 。2、若某变量被定义为数值型变量,未赋初始值时默认值为0。( 错 ) 改正:把0的单引号去掉。3、在结构体中定义一个全局变量(VARIABLES),可以在所有进程中使用。( 错 ) 改正:“变量(VARIABLES)”改为“信号”。4、语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机变量wr,可以直接对wr赋值。 ( 错 ) 改正:语句 type wr is (wr0,wr1,wr2,wr3,wr4,wr5); 定义了一个状态机

2、类型wr,需要定义一个该类型的对象,才可以对该对象赋值。5、进程语句中,不管在何时,process语句后面必须列出敏感信号 ( )包含wait语句的进程语句可不列出敏感信号。6、VHDL语言与计算机C语言的没有差别。 ( )l 运行的基础 计算机语言是在CPURAM构建的平台上运行 VHDL设计的结果是由具体的逻辑、触发器组成的数字电路 l 执行方式 计算机语言基本上以串行的方式执行 VHDL在总体上是以并行方式工作l 验证方式 计算机语言主要关注于变量值的变化 VHDL要实现严格的时序逻辑关系7、在结构体中定义一个全局变量(VARIABLES),可以在所有进程中使用。 ( ) “变量(VAR

3、IABLES)”改为“信号”。8、Moore状态机输出只是状态机当前状态的函数,Mealy状态机输出为有限状态机当前值和输入值的函数 ( ) 9、传统的系统硬件设计方法是采用自上而下(top down)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自下而上(bottom up)的设计方法。 ( )传统的系统硬件设计方法是采用自下而上(bottom up)的设计方法,利用硬件描述语言(HDL)的硬件电路设计方法采用自上而下(top down)的设计方法10、VHDL可以采用层次化的设计,一个高层的结构体中可以调用低层的实体 ( )11、一个VHAL程序中仅能使用一个进程(proce

4、ss)语句。 ( ) 可以使用多个进程语句。12、VHDL语言的预算操作包括了逻辑运算符、关系运算符、乘法运算符等,它们三者的优先级是相同的。 ( ) 逻辑运算符关系运算符qqqq=d;l END CASE;l 答案:CASE语句缺“WHEN OTHERS”语句。2. 已知data_in1, data_in2为STD_LOGIC_VECTOR(15 DOWNTO 0) 类型的输入端口,data_out为STD_LOGIC_VECTOR(15 DOWNTO 0)类型的输出端口,add_sub为STD_LOGIC类型的输入端口,请判断下面给出的程序片段:l LIBRARY IEEE;l USE I

5、EEE.STD_LOGIC_1164.ALL;l ENTITY add ISl PORT(data_in1, data_in2:IN INTEGER;l data_out:OUT INTEGER);l END add; l ARCHTECTURE add_arch OF add ISl CONSTANT a:INTEGER=2;l BEGINl data_out=( data_in1+ data_in2) * a;l END addsub_arch;答案:常量声明时赋初值的“=”符号应改用“:=”符号。3. 已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片段:l ARCHITECT

6、URE test_arch OF test ISl BEGINl SIGNAL B:STD_LOGIC;l QQQ 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为ST

7、D_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

8、q q q q = d ; END CASE ; 【参考答案】: CASE语句缺“WHEN OTHERS”语句。 四、判断下面程序中是否有错误,若有错误请改正;1、SIGNAL A,EN:STD_LOGIC;PROCESS(A,EN)VARIABLE B:STD_LOGIC;BEGIN IF EN=1 THEN B=A;END ;END PROCESS;2、 RCHITECTURE ONE OF SAMPLE ISVARIABLE A,B,C:INTEGER;BEGIN C=A+B;END ;五、判断下列程序是否有错误,如有则指出错误所在(10分)程序:LIBRARY IEEE;USE IEE

9、E.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY zyt12 IS PORT(R,EN,CP: IN bit; Q: BUFFER STD_LOGIC_VECTOR(0 DOWNTO 3); CO: OUT STD_LOGIC);END zyt;ARCHITECTURE c10 OF zyt12 BEGIN CO=1 WHEN(EN=1 AND Q=1011) ELSE; 0; PROCESS(R,CP) BEGIN IF R=1 THEN Q=0000; ELSIF

10、 (CPEVENT AND CP=1) THEN IF EN=0 THEN Q=Q; ELSIF Q=1011 THEN Q=0000; ELSE Q:=Q+1; END IF; END PROCESS; END one;六、VHDL程序改错:(10分)01 LIBRARY IEEE ;02 USE IEEE.STD_LOGIC_1164.ALL ;03 USE IEEE.STD_LOGIC_UNSIGNED.ALL;04 ENTITY LED7CNT IS05 PORT ( CLR : INSTD_LOGIC;06 CLK : IN STD_LOGIC;07 LED7S : OUT STD_

11、LOGIC_VECTOR(6 DOWNTO 0) ;08 END LED7CNT; 09 ARCHITECTURE one OF LED7CNT IS10 SIGNAL TMP : STD_LOGIC_VECTOR(3 DOWNTO 0);11 BEGIN 12 CNTROCESS(CLR,CLK)13 BEGIN 14 IF CLR = 1 THEN15 TMP = 0;16 ELSE IF CLKEVENT AND CLK = 1 THEN17 TMP LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S 0);

12、34 END CASE;35 END PROCESS;36 END one; 在程序中存在两处错误,试指出,并说明理由:提示:在MAX+PlusII 10.2上编译时报出的第一条错误为:Errorine 15: File */led7cnt.vhd: Type error: type in waveform element must be “std_logic_vector”第 行, 错误:改正:第 行, 错误: 改正:七、判断下列程序是否有错误,如有则指出错误所在,并为以下两个程序配上相应的实体和结构体。(10分)(10分)程序1:ARCHITECTURE one OF sample IS

13、VARIABLE a,b,c:INTEGER;BEGINC=a+bEND;程序2:signal A,EN: std_logic;process(A,EN) variable B: std_logic;beginif EN=1 then B=A;end if;end process;八、判断下列程序是否有错误,如有则指出错误所在,并为以下两个程序配上相应的实体和结构体。程序1:library ieee; use ieee.std_logic_1164.all;ENTITY sample is port(a,b:in integer; c:out integer); end sample;arch

14、itecture one of sample is begin c=a+b; end one;程序2:ENTITY sample1 is port(a,en:in std_logic; b:out std_logic); end sample1;architecture one of sample1 is beginprocess(A,EN)beginif EN=1 then B=A;end if;end process;end one;九、程序改错题(仔细阅读下列程序后回答问题,12分)1 LIBRARY IEEE;2 USE IEEE.STD_LOGIC_1164.ALL;3 USE IE

15、EE.STD_LOGIC_UNSIGNED.ALL;4 ENTITY gc IS 5 PORT ( CLK : IN STD_LOGIC ;6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; 7 END gc; 8 ARCHITECTURE bhv OF gc IS9 SIGNAL Q1 : RANGE 0 TO 9; 10 BEGIN 11 PROCESS (clk,Q) 12 BEGIN13 IF RISING_EDGE(CLK) THEN 14 IF Q1 1001 THEN15 Q1 = Q1 + 1 ; 16 ELSE 17 Q1 0); 18 END

16、IF;19 END IF; 20 END PROCESS ;21 Q out1 out1= 0; 当value取十时END CASE;程序段2:ARCHITECTURE bad OF ex ISSIGNAL a_vect: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL b_vect: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN0&a=b;END;程序段3:IF sel =1 THENC = “01”;ELSIF John =”100” THENC=”10”;ELSE c=”00”;ELSE C=”11”;END IF;第2题:判断下列VHDL

17、标识符是否合法,如果有误则指出原因。(1) _Decoder_1;(2) 2FFT;(3) Sig_#N;(4)RyY_RsT_;(5) data_ _BUS;第3题:下面的赋值语句执行之后矢量a ,b将分别得到什么值?ARCHITECTURE rtl OF ex IS SIGNAL a, b: STD_LOGIC_VECTOR (4 downto 0);SIGNAL c: STD)LOGIC_VECTOR (0 to 2);BEGIN a 0, 2=1, 4=1, others=b(4);a的第一赋值为0,二四位赋值为1,其他位(0,3位)赋值为b的第四位0,其结果为10100b 1, 2=

18、0, 3=1,others=c(1); b的第0三位赋值为1,第二位赋值为0,其他位(1,4位)赋值为c的第一位0,结果为01001c out1 out1 NULL ; END CASE;第2题: ENTITY case_ex ISPORT(a: IN STD_LOGIC_VECTOR(4 DOWNTO 0);q:out STD_LOGIC_VECTOR(2 DOWNTO 0);END;ARCHITECTURE rtl OF case_ex ISBEGINP1:PROCESS(a)BEGINCASE a ISWHEN “00000” = q q q= ”000”;END CASE;END PR

19、OCESS;END;第3题: IF sel =”11” THEN IF td =1 THENC=“01”;ELSIF td =0 THENC=”10”;ELSE c dd dd= 0;END CASE;第2题:IF sel =”01” THENC = “01”;IF sel =”10” THENC=”10”;ELSE c=”00”;END IF;第3题:ARCHITECTURE bad OF ex ISSIGNAL a:BIT_VECTOR(2 DOWNTO 0);SIGNAL b:BIT_LOGIC_VECTOR(2 DOWNTO 1);BEGINa S_out S_out = 1;END

20、CASE;第2题:ARCHITECTURE bhv OF ex ISSIGNAL a:STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL b:STD_LOGIC_VECTOR(0 TO 4);SIGNAL c: STD_LOGIC;BEGINa =”1101”;b (4) =c;b (0 TO 3)=a (3 DOWNTO 0);END;第3题:IF a =1 THENC = “111”;ELSIF b =”100” THENC=”110”;ELSE c=”010”;END IF;END IF;十四、VHDL程序改错:仔细阅读下列程序,回答问题1LIBRARY IEEE;2

21、USE IEEE.STD_LOGIC_1164.ALL;34ENTITY CNT10 IS 5 PORT ( CLK : IN STD_LOGIC ;6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; 7END CNT10; 8ARCHITECTURE bhv OF CNT10 IS9 SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); 10BEGIN 11 PROCESS (CLK) BEGIN12 IF RISING_EDGE(CLK) begin 13 IF Q1 9 THEN14 Q1 = Q1 + 1 ; 15 ELSE

22、16 Q1 0); 17 END IF;18 END IF; 19 END PROCESS ;20 Q = Q1;21END bhv;1. 在MAX+PlusII中编译时,提示的第一条错误为:Error: Line 12: File e:myworktestcnt10.vhd: VHDL syntax error: If statement must have THEN, but found BEGIN instead指出并修改相应行的程序(如果是缺少语句请指出大致的行数):错误1行号: 程序改为:错误2行号: 程序改为:2. 若编译时出现如下错误,请分析原因。十五、VHDL程序改错:本题程序

23、为EDA实验中的示例程序sch.vhd,仔细阅读程序,回答问题。1.对该程序进行编译时出现错误提示:“VHDL Design File “sch” must contain an entity of the same name.”这是什么原因?如何修改?2.修改问题1的错误后,如果编译时出现“Cant open VHDL “WORK” ”这样的错误提示。这又是什么原因,如何修改?library ieee;-1use ieee.std_logic_1164.all;-2entity schk is-3port (din, clk, clr: in std_logic;- 串行输入数据位/工作时钟

24、/复位信号-4ab: out std_logic_vector(3 downto 0)- 检测结果输出-5);-6end schk;-7architecture bhv of schk is-8signal q : integer range 0 to 8;-9signal d : std_logic_vector(7 downto 0);- 8位待检测预置数-10begin-11d = 11100101;- 8位待检测预置数-12process (clk, clr)-13begin-14if clr = 1 then q if din = d(7) then q = 1; else q if

25、 din = d(6) then q = 2; else q if din = d(5) then q = 3; else q if din = d(4) then q = 4; else q if din = d(3) then q = 5; else q if din = d(2) then q = 6; else q if din = d(1) then q = 7; else q if din = d(0) then q = 8; else q q = 0;-26end case;-27end if;-28end process;-29process (q)-30begin-31if

26、q = 8 thenab = 1010;-32elseab = 1011;-33end if;-34end process;-35end bhv;-361. 在上述程序代码中存在两处错误,编译时出现如下提示,试修改错误:Error: Line 12: File f:edaschk.vhd: VHDL syntax error: unexpected signal “d” in Concurrent Statement PartError: Line 29:File f:edaschk.vhd: VHDL syntax error: if statement must have END IF,

27、but found PROCESS instead错误1行号: 程序改为:错误2行号: 程序改为:十六、VHDL程序改错仔细阅读下列程序,回答问题LIBRARY IEEE;- 1USE IEEE.STD_LOGIC_1164.ALL;- 2ENTITY LED7SEG IS- 3PORT (A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);- 4CLK : IN STD_LOGIC;- 5LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);- 6END LED7SEG;- 7ARCHITECTURE one OF LED7SEG IS- 8S

28、IGNAL TMP : STD_LOGIC;- 9BEGIN- 10SYNC : PROCESS(CLK, A)- 11BEGIN- 12IF CLKEVENT AND CLK = 1 THEN- 13TMP LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S = 1101111;- 29END CASE;- 30END PROCESS;- 31END one;- 321. 在程序中存在两处错误,试指出,并说明理由:2. 修改相应行的程序:错误1行号: 程序改为:错误2行号: 程序改为:十八、VHDL程序改错仔细阅读下列程序,回答问题LIBRARY IEEE;- 1USE IEEE.STD_LOGIC_1164.ALL;- 2ENTITY LED7SEG IS- 3PORT (A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);-

温馨提示

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

评论

0/150

提交评论