EDA课后作业
- 格式:ppt
- 大小:305.51 KB
- 文档页数:31
作业3-6module Mux3_1(a1,a2,a3,s0,s1,outy); input a1,a2,a3,s0,s1;output outy;reg outy;reg temp;always @(a2,a3,s0)beginif(s0 == 1'b0)temp = a2;elsetemp = a3;endalways @(a1, temp,s1)beginif(s1 == 1'b0)outy = a1;elseouty = temp;endendmodule作业3-7 半减器module H_suber(x,y,diff,s_out);input x,y;output diff,s_out;reg s_out;wire diff;assign diff = x ^ y;always @(x,y)beginif(x < y)s_out = 1'b1;elses_out = 1'b0;endendmodule全减器module F_suber(x,y,sub_in,diffr,sub_out); input x,y,sub_in;output diffr,sub_out;wire diffr,sub_out;wire H_diff,H_sout,s_out;assign sub_out = s_out || H_sout;H_suber U1 (.x(x),.y(y),.diff(H_diff),.s_out(H_sout));H_suber U2 (.x(H_diff),.y(sub_in),.diff(diffr),.s_out(s_out));Endmodule8位全减器module Bit8_suber(X,Y,Sub_in,Diff,Sub_out);input[7:0] X,Y;input Sub_in;output[7:0] Diff;output Sub_out;wire[7:0] Diff;wire Sub_out;wire[6:0] sub_out;F_suber U1(.x(X[0]),.y(Y[0]),.sub_in(Sub_in),.diffr(Diff[0]),.sub_out(sub_out[0]));F_suber U2(.x(X[1]),.y(Y[1]),.sub_in(sub_out[0]),.diffr(Diff[1]),.sub_out(sub_out[1])); F_suber U3(.x(X[2]),.y(Y[2]),.sub_in(sub_out[1]),.diffr(Diff[2]),.sub_out(sub_out[2])); F_suber U4(.x(X[3]),.y(Y[3]),.sub_in(sub_out[2]),.diffr(Diff[3]),.sub_out(sub_out[3])); F_suber U5(.x(X[4]),.y(Y[4]),.sub_in(sub_out[3]),.diffr(Diff[4]),.sub_out(sub_out[4])); F_suber U6(.x(X[5]),.y(Y[5]),.sub_in(sub_out[4]),.diffr(Diff[5]),.sub_out(sub_out[5])); F_suber U7(.x(X[6]),.y(Y[6]),.sub_in(sub_out[5]),.diffr(Diff[6]),.sub_out(sub_out[6])); F_suber U8(.x(X[7]),.y(Y[7]),.sub_in(sub_out[6]),.diffr(Diff[7]),.sub_out(Sub_out)); Endmodule作业3-13Amodule DFF_A(D,EN,CLK,RST,Q,Q1);input D,EN,CLK,RST;output Q,Q1;reg Q;wire Q1;wire D_temp;assign D_temp = D && EN;assign Q1 = (~D_temp)||RST;always @(negedge RST or posedge CLK)beginif(!RST)Q <= 1'b0;elseif(EN)Q <= D;elseQ <= Q;endmoduleBmodule DFF_B (A,B,C,D,Y);input A,B,C,D;output Y;reg Y;wire temp1,temp2,temp3;assign temp1 = A || B;assign temp2 = C && D;assign temp3 = temp1 ^ temp2; always @(A,temp1,temp3)beginif(temp1)Y = temp3;elseY = A;endendmoduleCmodule DFF_C(RST,D,CLK,Q,DOUT); input RST,D,CLK;output Q,DOUT;reg Q,DOUT;reg D_temp1;wire D_temp2;assign D_temp2 = D ^ D_temp1; always @(RST,D)beginif(RST)D_temp1 = 1'b0;elseD_temp1 = D;endalways @(posedge CLK)beginQ <= D_temp1;DOUT <= D_temp2;endmoduleDmodule DFF_D(SET,D,CLK,EN,RESET,Q);input SET,D,CLK,EN,RESET;output Q;reg Q;wire SET_temp;assign SET_temp = (~RESET) && SET;always @(posedge CLK or posedge RESET or posedge SET_temp) beginif(RESET)Q <= 1'b0;elseif(SET_temp)Q <= 1'b1;elseif(EN)Q <= D;elseQ <= Q;endendmodule8-2.用Mealy机类型,写出控制ADC0809采样的状态机。
第一章绪论作业1、EDA的英文全称是什么?EDA的中文含义是什么?答:EDA的英文全称是Electronic Design Automation;中文含义是电子设计自动化。
5、FPGA和CPLD各包含几个基本组成部分?答:FPGA和CPLD均包含三个部分:可编程逻辑单元阵列、可编程互连、可编程I/O单元。
CPLD内部的可编程逻辑单元以乘积项阵列为主,而FPGA内部采用LUT加寄存器结构。
6、FPGA和CPLD各有什么特点?二者在存储逻辑信息方面有什么区别?在实际使用中,在什么情况下选用CPLD?在什么情况下选用FPGA?答:特点:CPLD内部的可编程逻辑单元以乘积项阵列为主,触发器数量相对FPGA要少,规模和复杂度较低。
FPGA内部采用LUT加寄存器结构,触发器数量多,规模和复杂度较高。
在存储逻辑信息方面,CPLD主要采用PROM存储信息;FPGA主要采用SRAM存储信息。
在实际使用中,一般规模逻辑设计,以控制功能为主的情况下优先选用CPLD。
对于复杂逻辑设计,需要存储大量数据的情况下优先选用FPGA。
10、对于目标器件为FPGA/CPLD的VHDL设计,其工程设计包括几个主要步骤?每步的结果是什么?答:主要设计步骤:(1)设计输入:采用HDL语言、原理图、状态图等方式,结果为设计的源代码。
(2)逻辑综合:将RTL级描述转换为优化过的具有特定工艺的门级实现,产生网表文件。
(3)目标器件的布线/适配:将综合器产生的网表文件映射到目标器件中,产生最终的下载文件。
(4)目标器件的编程/下载,得到具有特定功能的电路。
(5)硬件仿真、测试,11、名称解释逻辑综合、逻辑适配、行为仿真、功能仿真、时序仿真答:逻辑综合:将RTL级描述转换为优化过的具有特定工艺的门级实现,即网表文件。
逻辑适配:将综合器产生的网表文件映射到目标器件中,产生最终的下载文件。
行为仿真:将源程序直接送到VHDL仿真器中所进行的仿真。
功能仿真:将综合后的网表文件送到VHDL仿真器中所进行的仿真。
1.功能仿真和时序仿真有何不同?为什么?答:EDA 中功能仿真是纯理论的仿真,功能仿真不考虑信号传送过程中的延迟。
仿真结果可以和我们的真值表对应起来。
而时序仿真则要考虑信号传送过程中的延迟,有可能出现竞争冒险等。
时序仿真比较接近实际。
由图(2)(3)中可知时序仿真中的波形有一小段时间比功能仿真中的波形多了一个BCD码--13。
因为功能仿真只是考虑元件的理想功能,而时序仿真考虑到实际元器件的信号延时、输入/输出时间的延时、触发器的建立/保持时间、寄存器的性能等等1,什么是同步清零和异步清零?同步清零就是把清零信号和时钟信号与或者与非处理后输入到清零端,异步清零的清零信号直接输入到清零端。
同步清零可以保证状态在时钟的有效期内不会改变。
就是说,同步清零要与时钟同步触发,而异步清零就不关心时钟上升沿是否到来。
2,BCD计数器和一般二进制计数器有何差别?用4位二进制数来表示1位十进制数中的0~9这10个数码,简称BCD码。
称BCD码或二-十进制代码,亦称二进码十进数。
是一种二进制的数字编码形式,用二进制编码的十进制代码。
由于十进制数共有0、1、2、……、9十个数码,因此,至少需要4位二进制码来表示1位十进制数。
4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十进制数码,共有N=16!/(16-10)!约等于2.9乘以10的10次方种方案。
二进制计数器是数字系统中用得较多的基本逻辑器件。
它不仅能记录输入时钟脉冲的个数,还可以实现分频、定时、产生节拍脉冲和脉冲序列等。
例如,计算机中的时序发生器、分频器、指令计数器等都要使用计数器。
计数器的种类很多。
按时钟脉冲输入方式的不同,可分为同步计数器和异步计数器;按进位体制的不同,可分为二进制计数器和非二进制计数器;按计数过程中数字增减趋势的不同,可分为加计数器、减计数器和可逆计数器3.键盘为什么要防抖动?如何防抖动?主要目的是为了提高按键输入可靠性,由于机械触点的弹性振动,按键在按下时不会马上稳定地接通而在弹起时也不能一下子完全地断开,因而在按键闭合和断开的瞬间均会出现一连串的抖动,这称为按键的抖动干扰。
1.1、设计集成计数器74161,设计要求如下:4-BIT BINARY UP COUNTER WITH SYNCHRONOUS LOAD AND ASYNCHRONOUS CLEAR NOTEINPUTS: CLK LDN CLRN D C B AOUTPUTS:QD QC QB QA RCO*RCO = QD & QC & QB & QALIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4 ISPORT(CLK,LDN,CLRN : IN STD_LOGIC;D,C,B,A : IN STD_LOGIC;CARRY : OUT STD_LOGIC;QD,QC,QB,QA : OUT STD_LOGIC);END;ARCHITECTURE A OF CNT4 ISSIGNAL DATA_IN: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINDATA_IN<=D&C&B&A;PROCESS(DATA_IN,CLK,LDN,CLRN)VARIABLE CNT:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF CLRN='0' THENCNT:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF LDN='0' THENCNT:=DATA_IN;ELSECNT:=CNT+1;END IF;END IF;CASE CNT ISWHEN "1111"=> CARRY<='1';WHEN OTHERS=> CARRY<='0';END CASE;QA<=CNT(0);QB<=CNT(1);QC<=CNT(2);QD<=CNT(3);END PROCESS;END A;1.2、设计一个通用双向数据缓冲器,要求缓冲器的输入和输出端口的位数可以由参数决定。
中国地质大学5.8判断下面三个程序是否有错误,若有则指出错误所在,并给出完整程序。
程序1: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 first isport(d,e:in std_logic;c:out std_logic);end ;architecture one of first issignal A,EN:std_logic;beginA<=d;EN<=e;process(A,EN)variable B:std_logic;beginif EN='1' then B:=A;end if;c<=B;end process;end ;2)仿真结果:3)电路图:程序2:Architecture one of sample isvariable a,b,c:integer;beginc<=a+b;end;改过后:1)程序:library ieee;use ieee.std_logic_1164.all; entity second isport(d,e:in integer range 0 to 5; q:out integer range 0 to 10); end entity ;architecture one of second issignal a,b,c:integer;begina<=d;b<=e;c<=a+b;q<=c;end architecture one;2)仿真结果:3)电路图:程序3:library ieee;use ieee.std_logic_1164.all;entity mux21 isport(a,b:in std_logic;sel:in std_logic;c:out std_logic;); end sam2;architecture one of mux21 isbeginif sel=’0’ then c:=a;else c:=b;end if;end two;改过后:1)程序:library ieee;use ieee.std_logic_1164.all;entity mux21 isport(a,b:in std_logic;sel:in std_logic;c:out std_logic);end mux21;architecture one of mux21 isbeginprocess(sel,a,b)beginif sel='0'then c<=a;else c<=b;end if;end process;end one;2)仿真结果:3)电路图:5.10根据例5.4设计8位左移移位寄存器,给出时序仿真波形。
EDA习题第一章1.1 EDA的英文全称是什么?EDA的中文含义是什么?答:EDA即Electronic Design Automation的缩写,直译为:电子设计自动化。
1.2 什么叫EDA技术?答:EDA技术有狭义和广义之分,狭义EDA技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。
1.3 利用EDA技术进行电子系统的设计有什么特点?答:①用软件的方式设计硬件;②用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③设计过程中可用有关软件进行各种仿真;④系统可现场编程,在线升级;⑤整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
1.4 从使用的角度来讲,EDA技术主要包括几个方面的内容?这几个方面在整个电子系统的设计中分别起什么作用?答:EDA技术的学习主要应掌握四个方面的内容:①大规模可编程逻辑器件;②硬件描述语言;③软件开发工具;④实验开发系统。
其中,硬件描述语言是重点。
对于大规模可编程逻辑器件,主要是了解其分类、基本结构、工作原理、各厂家产品的系列、性能指标以及如何选用,而对于各个产品的具体结构不必研究过细。
对于硬件描述语言,除了掌握基本语法规定外,更重要的是要理解VHDL的三个“精髓”:软件的强数据类型与硬件电路的惟一性、硬件行为的并行性决定了VHDL语言的并行性、软件仿真的顺序性与实际硬件行为的并行性;要掌握系统的分析与建模方法,能够将各种基本语法规定熟练地运用于自己的设计中。
对于软件开发工具,应熟练掌握从源程序的编辑、逻辑综合、逻辑适配以及各种仿真、硬件验证各步骤的使用。
EDA技术与应用课后习题答案(2)END IF;END PROCESS;PR02:PROCESS(s1)BEGINIF s1=”0” THEN outy<=a1;ELSE outy<=tmp;END IF;END PROCESS;END ARCHITECTURE ONE;END CASE;4-4.下图是一个含有上升沿触发的D触发器的时序电路,试写出此电路的VHDL设计文件。
4-4.答案LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MULTI ISPORT(CL:IN STD_LOGIC; --输入选择信号CLK0:IN STD_LOGIC; --输入信号OUT1:OUT STD_LOGIC);--输出端END ENTITY;ARCHITECTURE ONE OF MULTI ISSIGNAL Q : STD_LOGIC;BEGINPR01: PROCESS(CLK0)BEGINIF CLK ‘EVENT AND CLK=’1’THEN Q<=NOT(CL OR Q);ELSEEND IF;END PROCESS;PR02: PROCESS(CLK0)BEGINOUT1<=Q;END PROCESS;END ARCHITECTURE ONE;END PROCESS;4-5.给出1位全减器的VHDL描述。
要求:(1) 首先设计1位半减器,然后用例化语句将它们连接起来,图3-32中h_suber是半减器,diff是输出差,s_out是借位输出,sub_in 是借位输入。
(2) 以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计(减法运算是 x – y - sun_in = diffr) 4-5.答案底层文件1:or2a.VHD实现或门操作LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY or2a ISPORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END ENTITY or2a;ARCHITECTURE one OF or2a ISBEGINc <= a OR b;END ARCHITECTURE one;底层文件2:h_subber.VHD实现一位半减器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY h_subber ISPORT(x,y:IN STD_LOGIC;diff,s_out::OUT STD_LOGIC);END ENTITY h_subber;ARCHITECTURE ONE OF h_subber ISSIGNAL xyz: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGINxyz <= x & y;PROCESS(xyz)BEGINCASE xyz ISWHEN "00" => diff<='0';s_out<='0';WHEN "01" => diff<='1';s_out<='1';WHEN "10" => diff<='1';s_out<='0';WHEN "11" => diff<='0';s_out<='0';WHEN OTHERS => NULL;END CASE;END PROCESS;END ARCHITECTURE ONE;顶层文件:f_subber.VHD实现一位全减器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY f_subber ISPORT(x,y,sub_in:IN STD_LOGIC;diffr,sub_out:OUT STD_LOGIC);END ENTITY f_subber;ARCHITECTURE ONE OF f_subber IS COMPONENT h_subberPORT(x,y:IN STD_LOGIC;diff,S_out:OUT STD_LOGIC);END COMPONENT;COMPONENT or2aPORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END COMPONENT;SIGNAL d,e,f: STD_LOGIC;BEGINu1: h_subber PORT MAP(x=>x,y=>y,diff=>d,s_out=>e);u2: h_subber PORT MAP(x=>d,y=>sub_in,diff=>diffr,s_out=>f);u3: or2a PORT MAP(a=>f,b=>e,c=>sub_out);END ARCHITECTURE ONE;END ARCHITECTURE ART;4-6.根据下图,写出顶层文件MX3256.VHD的VHDL设计文件。
EDA课后题答案第⼀章1.什么叫EDA技术?及狭义定义(书P1)Electronic Design Automation--电⼦设计⾃动化。
EDA的⼴义定义范围包括:半导体⼯艺设计⾃动化、可编程器件设计⾃动化、电⼦系统设计⾃动化、印刷电路板设计⾃动化、仿真与测试、故障诊断⾃动化、形式验证⾃动化统称EDA⼯程。
2.EDA发展历程:CAD- CAE -EDA3 .EDA技术的主要内容实现载体(硬件基础):⼤规模可编程逻辑器件(PLD_Programmable Logic Device)描述⽅式:硬件描述语⾔(HDL_Hard descripation Lauguage,VHDL,Verilog HDL等)设计⼯具:开发软件、开发系统硬件验证:实验开发系统FPGA 在结构上主要分为三个部分,即可编程逻辑单元,可编程输⼊/输出单元和可编程连线三个部分。
CPLD在结构上主要包括三个部分,即可编程逻辑宏单元,可编程输⼊/输出单元和可编程内部连线。
4.硬件描述语⾔(HDL_Hardware Description Language)VHDL:IEEE标准硬件描述语⾔,在电⼦⼯程领域,已成为事实上的通⽤硬件描述语⾔。
系统级抽象描述能⼒较强。
Verilog:⽀持的EDA⼯具较多,适⽤于RTL级和门电路级的描述,其综合过程较VHDL 稍简单,门级开关电路描述能级较强,但其在⾼级描述⽅⾯不如VHDL。
ABEL:⼀种⽀持各种不同输⼊⽅式的HDL,系统级抽象描述能⼒差,适应于门级电路描述。
5. 仿真⼯具功能仿真(也叫前仿真、系统级仿真、⾏为仿真)验证系统的功能。
时序仿真(也叫后仿真、电路级仿真):验证系统的时序特性、系统性能。
6. EDA的⼯程设计流程(P8)第⼆章1.在系统可编程技术(ISP)定义ISP(In_System Programmability/Programming)是指对器件、电路板、整个电⼦系统进⾏逻辑重构和修改功能的能⼒。