采用VHDL语言设计一个1位二进制半减器,然后采用元件例化语句进一步设计出1位二进制全减器

合集下载

(12-13)1位二进制全加器的VHDL设计

(12-13)1位二进制全加器的VHDL设计

3、标准逻辑矢量:std_logic_vector( * downto *) 或者 std_logic_vector( * to *) 表示一维数组或者总线 并置操作符& 用于将单独的信号合并起来组成新的数组或 者总线 4、1位全加器的VHDL描述 半加器的VHDL描述 全加器的VHDL描述(层次设计)
作用:表示多分支情况的选择语句,各分支无优先级。 执行:每次启动CASE语句,只选择执行其中一个分支的语句。 注意:(1)对所有的情况都要赋值,否则会综合成锁存器。 (2)CASE语句只能在process语句中使用。 (3)与IF语句的区别。
2. 标准逻辑矢量数据类型STD_LOGIC_VECTOR
半加器h_adder电路图
全加器f_adder电路图
▼半加器描述和CASE语句
半加器h_adder逻辑功能真值表 a b so co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 可使用CASE语句描述真值表
1. CASE语句
CASE语句的一般表式是:
CASE <表达式> IS When <选择值1或标识符1> => <顺序语句>; ... ; <顺序语句> ; When <选择值2或标识符2> => <顺序语句>; ... ; <顺序语句> ; ... END CASE ;
课外练习:
采用调用方法设计8位全加器 。 提示:调用8次,将8个1位全加器串连起来。
4 计数器设计
知识要点
计数器:广泛用于控制。 整数:INTEGER, 要定义范围,便于综合器确定线 宽。 • 表示方法:如2,35,16#d9#, 2#11001#等。 • 自然数和正整数。 操作符的重载函数 • 重载:给操作符赋予新的功能,使不同数据类型 的数据可以混合使用 • 使用重载函数: USE IEEE.STD_LOGIC_UNSIGNED.ALL

DZ054_6102105183_许伟国_1

DZ054_6102105183_许伟国_1

南昌大学实验报告学生姓名:许伟国学号:6102105183 专业班级:电子信息工程054班实验类型:□验证□综合□设计□创新实验日期:2007、10、24实验成绩:一、实验项目名称:1位二进制全加/减器设计二、实验目的:1.熟悉EDA技术开发流程;2.熟悉Quartes II集成开发软件的使用;3.初步熟悉PH-1V型实验装置的使用;4.学习用原理图输入法和文本输入法进行简单的数字电路设计。

三、实验基本原理:1.一位二进制全加器:ain bin cin为全加器的输入端,cout sum为输出端, ain bin为输入的1位二进制数,cin 位二进制数相加的进位输出到本位的输入,sum为本位二进制数ain bin和低位进位输入cin的相加之和,cout为ain bin cin相加向高位的进位输出。

2.一位二进制全减器输入变量为本位被减数A,本位减数B,低位向本位的借位C输出变量为本位差F,本位向高位的借位CY四、主要仪器设备及耗材:PC机、Quartus II软件、EDA实验箱各一台套五、实验步骤:1.用文本输入法(VHDL语言)设计一个1位二进制半加器2.用文本输入法(VHDL语言)设计一个1位二进制全加器,要求用例化语句调用上述1位二进制半加器;3.对上述1位二进制全加器进行时序仿真;4.用原理图输入法设计一个1位二进制半减器;5.用原理图输入法设计一个1位二进制半减器,要求用例化语句调用上述1位二进制半减器;6.对上述1位二进制全减器进行功能仿真;7.在仿真正确的情况下,对1位二进制半加/减器分别下载到实验箱中做硬件测试。

六、实验数据及处理结果:1、一位全加器可以由两个半加器和一个或门连接而成,因而可根据半加器的电路原理图或真值表写出或门和半加器的VHDL描述。

1)、半加器真值表:2)、半加器原理图:3)、半加器VHDL语言描述:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder ISPORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder IS BEGINso<=NOT(a XOR (NOT b));co<=a AND b;END ARCHITECTURE fh1;4)、或门VHDL语言描述:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.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;5)、一位二进制全加器VHDL语言描述:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY quanjiaqi ISPORT(ain,bin,cin:IN STD_LOGIC;cout,sum:OUT STD_LOGIC);END ENTITY quanjiaqi;ARCHITECTURE fd1 OF quanjiaqi ISCOMPONENT h_adderPORT(a,b:IN STD_LOGIC;co,so: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_adder PORT MAP(a=>ain,b=>bin,co=>d,so=>e);u2 : h_adder PORT MAP(a=>e, b=>cin,co=>f,so=>sum);u3 : or2a PORT MAP(a=>d, b=>f, c=>cout);END ARCHITECTURE fd1;6)、仿真波形:7)、管脚绑定,下载设计文件,在实验箱上测试设计结果:2、一位全减器可以由两个半减器和一个或门连接而成,因而可根据半减器的真值表画出原理图,通过元件连接而成全减器。

用VHDL结构描述设计一全减器

用VHDL结构描述设计一全减器

下面再将或门的VHDL程序描述如下:
ENTITY orgate IS PORT(A1,B1:IN BIT; O1:OUT BIT); END orgate;
ARCHITECTURE orgate_arc OF orgate IS BEGIN O1<= A1 OR B1; END orgate_arc;
I1 I2
U0 halfsub
temp_T
ห้องสมุดไป่ตู้
U1
FT
C_OUT
BEGIN U0:halfsub PORT MAP(I1,I2,temp_T,temp_c1); U1:halfsub PORT MAP(temp_T,C_IN,FT,temp_c2); U2:orgate PORT MAP(temp_c1,temp_c2,C_OUT); END fullsub_arc; 图中虚线框各元件之间 halfsub 的连线命名。temp_T将第一 temp_c2 个半减器的差位输出连到第 C_IN 二个半减器的输入端。信号 temp_c1 temp_c1将第一个半减器的借 U2 位输出连至“或”门的一个输入 端,信号temp_c2将第二个半 减器的借位输出连至“或”门的 另一个输入端。 用三个元件调用语句定义这三个连接关系。
用VHDL结构描述设计一全减器,全减器可由两个 半减器和一个或门组成。
I1 I2 C_IN
U0 temp_T U1 FT halfsub halfsub temp_c2 temp_c1 U2 C_OUT
首先用VHDL的行为描述设计半减器:
ENTITY halfsub IS PORT(A,B:IN BIT; T,C:OUT BIT); END halfsub; ARCHITECTURE halfsub_arc OF halfsub IS BEGIN PROCESS(A,B) BEGIN T<= A XOR B AFTER 10 ns; C <= (NOT A) AND B AFTER 10 ns; END PROCESS; END halfsub_arc;

vhdl 四输入表决器 二位二进制乘法器 一位二进制全减器等源代码及仿真波形

vhdl 四输入表决器 二位二进制乘法器 一位二进制全减器等源代码及仿真波形

将8421BCD转换为余3码源代码:Library ieee;Use ieee.std_logic_1164.all;Entity bcd isPort(a:in std_logic_vector(3 downto 0);y:out std_logic_vector(3 downto 0));End;Architecture rtl of bcd isBeginProcess(a)BeginCase a isWhen"0000"=>y<="0011";When"0001"=>y<="0100";When"0010"=>y<="0101";When"0011"=>y<="0110";When"0100"=>y<="0111";When"0101"=>y<="1000";When"0110"=>y<="1001";When"0111"=>y<="1010";When"1000"=>y<="1011";When"1001"=>y<="1100";When others=>y<="ZZZZ";End case;End process;End;仿真图形:(仿真结果均有延时,大约20ns)四输入表决器源代码:Library ieee;Use ieee.std_logic_1164.all;Entity bjq isPort(i:in std_logic_vector(3 downto 0);f:out std_logic);End;Architecture nm2 of bjq isBeginProcess(i)Begincase i isWhen"0000"=>f<='0';When"0001"=>f<='0';When"0010"=>f<='0';When"0011"=>f<='0';When"0100"=>f<='0';When"0101"=>f<='0';When"0110"=>f<='0';When"0111"=>f<='1';When"1000"=>f<='0';When"1001"=>f<='0';When"1010"=>f<='0';When"1011"=>f<='1';When"1100"=>f<='0';When"1101"=>f<='1';When"1110"=>f<='1';When"1111"=>f<='1';When others=>f<='Z';End case;End process;End;仿真图形:2位二进制相乘电路源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity multi isport(A,B:in std_logic_vector(1 downto 0);F:out std_logic_vector(3 downto 0));end;architecture bhv of multi isbeginprocess(A,B)beginif(A="01" and B="01" )thenF<="0001";elsif(A="01" and B="10")thenF<="0010";elsif(A="01" and B="11")thenF<="0011";elsif(A="10" and B="01")thenF<="0010";elsif(A="10" and B="10")thenF<="0100";elsif(A="10" and B="11")thenF<="0110";elsif(A="11" and B="01")thenF<="0011";elsif(A="11" and B="10")thenF<="0110";elsif(A="11" and B="11")thenF<="1001";elseF<="0000";end if;end process;end;仿真图形:一位二进制全减器源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity subtracter isport(A,B,Ci:in std_logic;F,Co:out std_logic);end;architecture bhv of subtracter isbeginprocess(A,B,Ci)beginif(A='0' and B='0' and Ci='0')thenF<='0';Co<='0';elsif(A='0' and B='0' and Ci='1')thenF<='1';Co<='1';elsif(A='0' and B='1' and Ci='0')thenF<='1';Co<='1';elsif(A='0' and B='1' and Ci='1')thenF<='0';Co<='1';elsif(A='1' and B='0' and Ci='0')thenF<='1';Co<='0';elsif(A='1' and B='0' and Ci='1')thenF<='0';Co<='0';elsif(A='1' and B='1' and Ci='0')thenF<='0';Co<='0';elseF<='1';Co<='1';end if;end process;end;仿真图形:开关控制电路源代码:Library ieee;Use ieee.std_logic_1164.all;Entity switch_control isPort(a,b,c:in std_logic;y:out std_logic);End;Architecture nm5 of switch_control isBeginProcess(a,b,c);V ariable comb:std_logic_vector(2 downto 0);BeginComb:=a&b&c;Case comb isWhen"000"=>y<='0';When"001"=>y<='1';When"011"=>y<='0';When"010"=>y<='1';When"110"=>y<='0';When"111"=>y<='1';When"101"=>y<='0';When"100"=>y<='1';When others=>y<='X';End case;End process;End;仿真图形:。

实验一:一位二进制全减器设计

实验一:一位二进制全减器设计

南昌大学实验报告学生姓名:刘志强学号: 6100409222 专业班级:电子091班实验类型:验证□综合□设计■创新□实验日期:实验成绩:实验一一位二进制全减器设计一、实验目的(1)掌握QuartusII的VHDL原理图设计和文本设计全过程;(2)熟悉简单组合电路的设计,掌握系统仿真,学会分析硬件测试结果。

二、实验内容与要求(1)设计一个二进制全减器,用分层设计方法,顶层为全减器,底层为半减器和逻辑门组成;(2)进行波形仿真,并分析仿真波形图;(3)下载测试全减法器是否正确。

三、设计思路/原理图一位全减器可以由两个半减器和一个或门连接而成,根据半减器真值表对半减器进行描述,再对或门的VHDL描述,而后根据原理图对全减器的VHDL描述。

图1 全减器f_suber电路图四、实验程序(程序来源:教科书本)library ieee; --半减器描述use ieee.std_logic_1164.all;entity h_suber is --定义半减器h_suber实体port(a,b:in std_logic;do,vo:out std_logic);end entity h_suber;architecture fs1 of h_suber issignal abc:std_logic_vector (1 downto 0);beginabc <= a&b ;process (abc)begincase abc iswhen "00" => do<='0';vo<='0';when "01" => do<='1';vo<='1';when "10" => do<='1';vo<='0';when "11" => do<='0';vo<='0';when others => null;end case;end process;end architecture fs1;library ieee; --一位二进制全减器顶层设计描述use ieee.std_logic_1164.all;entity f_suber is --定义全减器f_suber实体port (ain,bin,cin:in std_logic;v,sub:out std_logic);end entity f_suber;architecture fs of f_suber iscomponent h_suber ---调用半减器声明语句port (a,b:in std_logic;do,vo:out std_logic);end component;component or2a --调用或逻辑门声明语句port (m,n:in std_logic;h:out std_logic);end component;signal e,f,g:std_logic; ---定义3个信号作为内部的连接线beginu1:h_suber port map(a=>ain,b=>bin,do=>e,vo=>f); ---例化语句u2:h_suber port map(a=>e,b=>cin,do=>sub,vo=>g);u3:or2a port map(m=>g,n=>f,h=>v);end architecture fs;五、实验步骤1. 利用Quartus II 7.2建立工程在file中打开【】→【】→在【】中选择存放的目录→【】f_suber要与顶层文件中entity f_suber相同→点击next→点击next→选择芯片→next完成;再在file下面点【】→【】→点击ok→编写程序→编译并保存在f_suber文件中(改动程序后,再保存,再编译)→管脚【】→【】→而后对芯片设置,即打开device→点【】→点【】与【】→选如【】与【】→选芯片→确定ok ;重新编译→点下载,后选【】硬件有“JTAG【】”和“ASP【】手动添加以扩展名为.pof的文件【】”两个接口其一(要看硬件接口),选中【】”→添加【】中的驱动程序→【】→点【】开始下载。

一位全加器VHDL的设计实验报告

一位全加器VHDL的设计实验报告

EDA技术及应用实验报告——一位全加器VHDL的设计班级:XXX姓名:XXX学号:XXX一位全加器的VHDL设计一、实验目的:1、学习MAX+PLUSⅡ软件的使用,包括软件安装及基本的使用流程。

2、掌握用VHDL设计简单组合电路的方法和详细设计流程。

3、掌握VHDL的层次化设计方法。

二、实验原理:本实验要用VHDL输入设计方法完成1位全加器的设计。

1位全加器可以用两个半加器及一个或门连接构成,因此需要首先完成半加器的VHDL设计。

采用VHDL层次化的设计方法,用文本编辑器设计一个半加器,并将其封装成模块,然后在顶层调用半加器模块完成1位全加器的VHDL设计。

三、实验内容和步骤:1、打开文本编辑器,完成半加器的设计。

2、完成1位半加器的设计输入、目标器件选择、编译。

3、打开文本编辑器,完成或门的设计。

4、完成或门的设计输入、目标器件选择、编译。

5、打开文本编辑器,完成全加器的设计。

6、完成全加器的设计输入、目标器件选择、编译。

7、全加器仿真8、全加器引脚锁定四、结果及分析:该一位加法器是由两个半加器组成,在半加器的基础上,采用元件的调用和例化语句,将元件连接起来,而实现全加器的VHDL编程和整体功能。

全加器包含两个半加器和一或门,1位半加器的端口a和b分别是两位相加的二进制输入信号,h是相加和输出信号,c是进位输出信号。

构成的全加器中,A,B,C分别是该一位全加器的三个二进制输入端,H是进位端,Ci是相加和输出信号的和,下图是根据试验箱上得出的结果写出的真值表:信号输入端信号输出端Ai Bi Ci Si Ci0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1。

VHDL之一位全减器

VHDL之一位全减器

一位全减器实验实验目的:1.首先设计一位半减器,然后设计出半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。

半减器的实验程序为:library ieee;use ieee.std_logic_1164.all;entity h_suber isport (x,y : in std_logic;diff,s_out : out std_logic);end h_suber ;architecture hdlarch of h_suber isbeginprocess(x,y)begindiff <= x xor y;s_out <= (not x) and y;end process;end hdlarch;2.以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计(减法运算是 x – y - sun_in = diffr)。

以一位半减器为实体,生成器件,连接如下图的电路,使之构成以为全减器实验仿真波形:四位全减器实验1.实验原理:(1)利用前面设计的全减器(一位全减器)生成元件;(2)建立新的原理图,完成4位全减器的设计;(3)进行波形仿真验证;2.实验仿真波形图:7段数码显示译码器设计1、实验目的:学习7段数码显示译码器设计、多层次设计方法、和总线数据输入方式的仿真,并进行电路板下载验证。

2、实验原理:7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA 或CPLD中实现。

本项实验很容易实现这一目的。

例2作为7段BCD码译码器的设计,输出信号LED7S的7位分别接如实验图2数码管的7个段,高位在左,低位在右。

例如当LED7S 输出为 "1101101" 时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1,接有高电平的段发亮,于是数码管显示“5”。

1用VHDL设计的一位二进制全加器的示例程序

1用VHDL设计的一位二进制全加器的示例程序

1用VHDL设计的一位二进制全加器的示例程序VHDL(Very High-Speed Integrated Circuit Hardware Description Language)是一种硬件编程语言,它使用结构化的方法来描述数字系统中的电路。

在设计一位二进制全加器之前,我们需要了解一下什么是二进制全加器。

二进制全加器是一种逻辑电路,用于将两个二进制位以及一个进位输入相加,并生成一个和输出以及一个进位输出。

以下是一个使用VHDL编写的一位二进制全加器的示例程序:```vhdl-- Entity声明entity full_adder isportA, B, Cin : in std_logic; -- 输入端口,分别对应两个二进制位和进位Sum, Cout : out std_logic -- 输出端口,分别对应和和进位end full_adder;-- Architecture实现architecture behavior of full_adder isbeginprocess(A, B, Cin)variable temp_sum : std_logic;begintemp_sum := (A xor B) xor Cin; -- 计算和值Sum <= temp_sum; -- 输出和值Cout <= (A and B) or (Cin and (A xor B)); -- 计算进位end process;end behavior;```该程序定义了一个名为`full_adder`的实体,它有3个输入端口(A,B和Cin)和2个输出端口(Sum和Cout)。

`std_logic`是VHDL中的一种数据类型,用于表示逻辑电平。

在架构部分,程序使用一个过程来计算和值(temp_sum)和进位(Cout)。

和值的计算通过使用异或(`xor`)操作符来实现,进位的计算则使用与(`and`)和或(`or`)逻辑操作符的组合来实现。

用VHDL实现计算器

用VHDL实现计算器

谢谢观看!
then in3:=in1/in2; t<=in3; end if; end process p1111;
--'*'
p111:process(t) begin case t is when 0=>g<="11111100";--0 when 1=>g<="01100000";--1 when 2=>g<="11011010";--2 when 3=>g<="11110010";--3 when 4=>g<="01100110";--4 when 5=>g<="10110110";--5 when 6=>g<="10111110";--6 when 7=>g<="11100000";--7 when 8=>g<="11111110";--8 when 9=>g<="11110110";--9 when others=>t<="00000010";--错 end case; end process p111;
程序源码
--库的引用 LIBRARY IEEE; --USE IEEE.std_logic_arith.ALL; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --use ieee.numeric_bit.all;
--实体声明 entity adder is port( d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d

edA考试卷(带答案)

edA考试卷(带答案)

2008~2009学年第一学期EDA技术A卷适用:06级电子信息工程专业EDA技术A一、填空题:(共20分,每空1分)1、在VHDL程序设计中,常用的库有(IEEE库)(STD )(WORK )库等。

2、Max_plusII为原理图输入设计配备了各种需要的元件库,它们分别是(基本逻辑元件库)(宏功能元件库)(宏功能块LPM库)。

3、采用原理图输入设计的文件后缀为(.gdf ),采用波形图输入设计的文件后缀为(.wdf )4、在VHDL中的数值类属性测试函数主要有(left)(right)(high )和LOW。

5、FPGA/CPLD的设计流程为(设计输入)、(综合)(适配)(时序仿真与功能仿真)(编程下载)(硬件测试)。

6、若D<= “11” & ‘00’ & “01”,则D的值为(“110001”)。

7、若定义W : BUFFER STD_LOGIC_VECTOR(0 TO 5),程序中有W<=“100111”;则W(2)的值为(0 )。

8、定义signal f,g:std_logic_vector(5 downto 0); 若f的值为“101011”,若执行g<=(5=>f(1),4=>’1’, others=>f(4)); 则g的值是(110000 )。

二、简答题:(共10分)1、VHDL程序一般包括几个组成部分,每部分的作用是什么?答:VHDL程序一般包括3个组成部分,它们是(1)实体,它描述的是电路器件的端口构成和信号属性;(2)结构体,描述设计实体的内部结构和外部设计实体端口间的逻辑关系;(3)库及程序包的声明,在设计实体中的语句可以使用库中相应程序包的数据和文件。

2、什么叫顺序语句,它的适用范围是什么?VHDL有那几种基本的顺序语句?答:执行顺序与它们的书写顺序基本一致的语句叫顺序语句,顺序语句只能出现在进程和子程序中,子程序包括函数和过程。

(VHDL实验报告)一位半加器,全加器的设计

(VHDL实验报告)一位半加器,全加器的设计

A
10
五、实验步骤
(一)半加器的设计
4、对设计文件进行仿真
4)编辑输入端口波形,即指定输入端口的逻辑电平变化,在波形编辑窗 口中,选择要输入波形的输入端口。以 b 端口为例,右键单击 b ,依次选 择value--clock--period,将时间改为1us。然后重复此过程将 a 的时间改 成 2us (a的周期是b的2倍),再将输入端的D0--D3选择不同的周期(一次 要有所差别)。最后选择软件的 Fie>Save进行保存。
3)加入输入、输出端口,在波形编辑器窗口左边的端口名列表 区点击鼠标右键,在弹出的右键菜单中选择 Insert Node or Bus… 命令,在弹出的 Insert Node or Bus 对话框界面中点击 Node Finder…按钮。在出现的 Node Finder 界面中的 Filter 列表中选 择 点击 List,在 Nodes Found 窗口出现所有信号的名称,点击中 间的按钮则 Selected Nodes 窗口下方出现被选择的端口名称。双击 OK按钮,完成设置,回到 Insert Node or Bus 对话框,双击OK按钮 ,所有的输入、输出端口将会在端口名列表区内显示出来。
5)按默认选项,点击NEXT出现新建工程以前所有的设定信息, 再点击FINISH完成新建工程的建立。
A
7
五、实验步骤
(一)半加器的设计
2、建立文本设计文件
1)选择File--New--Device Design Files--VHDL File,点击OK按钮,打开进入文本编辑器对话框。
2)在文本编辑器中输入对应VHDL程序代码,如下图 所示:
全加器的设计采用“元件例化语句”,故需建立两个VHDL文 本编辑对话框(一个顶层文件,一个底层文件)。在相应的编辑框中 输入相应的VHDL语句,再分别以各自的实体名进行保存。注意的是顶 层文件名应必须与工程名一致。此次实验底层文件为半加器VHDL语句 ,顶层文件为全加器VHDL语句,其语句分别如下两图所示:

用VHDL描述二进制计数器

用VHDL描述二进制计数器

用VHDL描述二进制计数器
使用和结构和行为VHDL可以搭建出一个计数器电路。

在结构性技术器设计中,先列举所有需要的触发器并作为其器件,然后描述出下一状态逻辑来驱动每个触发器的D输入(数据输入)。

与行为性VHDL设计相比,这种设计方法非常冗长乏味,但是却能开发出很好的方案模型。

在任何标准的VHDL环境中,行为性计数器都可以很好的利用IEEE STD_LOGIC_UNSIGNED库。

使用SLU库,所有的STD_LOGIC数据类型都可以使用标准算术操作符,从而使计数器设计相当简单。

注意,计数器的计数输出是一个名称为B的矢量,且被定义为‘inout’类型,从而在赋值操作符两边都可以使用该矢量。

EDA技术与应用课后习题答案(2)

EDA技术与应用课后习题答案(2)

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设计文件。

实验五 用VHDL语言进行多位减法器的设计

实验五 用VHDL语言进行多位减法器的设计

实验五用VHDL语言进行多位减法器的设计实验五用vhdl语言进行多位减法器的设计实验5用vhdl语言进行多位减法器的设计一、实验目的学习在quartusⅱ下用vhdl语言设计复杂组合电路与功能仿真的方法。

二、实验仪器设备1、pc机一台2、quartusⅱ。

三、实验要求1、复习教材中的有关内容,编写成多位减法器的vhdl源程序。

2、用vhdl语言输入方式完成电路设计,编译、仿真后,在试验箱上实现。

四、实验内容及参考实验步骤1、用vhdl语言设计一个半减器。

并展开编程仿真。

2、在半减器的基础上,利用元件例化语句,设计一个一位的全减器,并编译仿真。

3、在一位全减器的基础上,利用元件例化语句,设计一个8位的全减器,并编程仿真。

五、实验报告1、根据实验过程写出试验报告2、总结用vhdl语言的设计流程1、总结复杂组合电路的设计方法。

附录1、半减器程序libraryieee;useieee.std_logic_1164.all;entityh_suberisport(x,y:instd_logic;diff,s_out:outstd_logic);endentityh_suber;architecturebhvofh_suberisbeginprocess(x,y)begindiff<=xxory;s_out<=(notx)andy;endprocess;endarchitecturebhv;2、一位全减器程序libraryieee;useieee.std_logic_1164.all;entitysuberisport(x,y,sub_in:instd_logic;diffr,sub_out:outstd_logic);endentitysuber;signalt0,t1,t2:std_logic;beginu1:h_suberportmap(x=>x,y=>y,diff=>t0,s_out=>t1);u2:h_suberportmap(x=>t0,y=>sub_in,diff=>diffr,s_out=>t2);sub_out<=t1ort2;endar chitecturebhv;3、8位全减器程序libraryieee;useieee.std_logic_1164.all;entitysub8isport(a,b:instd_logic_vector(7downto0);sin:instd_logic;sout:outstd_logic;c:outstd_logic_vector(7downto0));endentitysub8;port(x,y,sub_in:instd_logic;signalt:std_logic_vector(6downto0);beginu0:suberportmap(x=>a(0),y=>b(0),sub_in=>sin,diffr=>c(0),sub_out=>t(0));u1:sube rportmap(x=>a(1),y=>b(1),sub_in=>t(0),diffr=>c(1),sub_out=>t(1));u2:suberportm ap(x=>a(2),y=>b(2),sub_in=>t(1),diffr=>c(2),sub_out=>t(2));u3:suberportmap(x=> a(3),y=>b(3),sub_in=>t(2),diffr=>c(3),sub_out=>t(3));u4:suberportmap(x=>a(4),y =>b(4),sub_in=>t(3),diffr=>c(4),sub_out=>t(4));u5:suberportmap(x=>a(5),y=>b(5) ,sub_in=>t(4),diffr=>c(5),sub_out=>t(5));u6:suberportmap(x=>a(6),y=>b(6),sub_i n=>t(5),diffr=>c(6),sub_out=>t(6));u7:suberportmap(x=>a(7),y=>b(7),sub_in=>t(6 ),diffr=>c(7),sub_out=>sout);endarchitecturebhv;。

(12-13)1位二进制全加器的VHDL设计

(12-13)1位二进制全加器的VHDL设计

半加器h_adder电路图
全加器f_adder电路图
▼半加器描述和CASE语句
半加器h_adder逻辑功能真值表 a b so co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 可使用CASE语句描述真值表
1. CASE语句
CASE语句的一般表式是:
CASE <表达式> IS When <选择值1或标识符1> => <顺序语句>; ... ; <顺序语句> ; When <选择值2或标识符2> => <顺序语句>; ... ; <顺序语句> ; ... END CASE ;
【例】 。。。。。。。。。。。。。。。
ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN --Q1为内部信号,无传输方向限制 PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= Q1 + 1 ; --右边两个不同数据类型的数相加
【例】 LIBRARY IEEE; --半加器描述(1) USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so <= NOT(a XOR (NOT b)) ; co <= a AND b ; END ARCHITECTURE fh1;

通用十进制减法器(1)

通用十进制减法器(1)

湖南人文科技学院课程设计报告课程名称:EDA技术与VHDL课程设计设计题目:通用十进制减法器系别:通信与控制工程系专业:电子信息工程班级:学生姓名:学号:起止日期:2012年6月11日—2012年6月22日指导教师:教研室主任:摘要随着科技的发展,通用十进制减法器的应用已广泛融入到现实生活中。

EDA 技术的应用引起电子产品及系统开发的革命性变革。

本文采用EDA技术设计,并以VHDL语言为基础制作的通用十进制减法器。

该系统借助于强大的EDA工具和硬件描述语言可实现两个一位以上的十进制数的减法,在输入两个十进制数之后,给出两个数的相减结果。

本设计充分利用VHDL“自顶向下”的设计优点以及层次化的设计概念,提高了设计的效率。

设计主要步骤:首先利用QUARTUS‖来编辑、编译、仿真各个模块;然后以原理图为顶层文件建立工程,再进行引脚锁定、编译、下载,最后采用杭州康芯电子有限公司生产的GW48系列/SOPC/EDA 实验开发系统,进行硬件测试。

关键词:通用十进制减法器;EDA技术;VHDL语言; QUARTUS‖目录1 设计要求 (1)2 方案论证与对比 (1)2.1方案一 (1)2.2方案二 (1)2.3方案的对比与选择 (2)3 设计原理 (2)3.1全减器的设计 (3)3.2原理图设计 (4)4 调试与操作 (5)4.1通用十进制减法器的功能仿真 (5)4.2模式选择与引脚锁定 (5)4.2.1模式选择 (5)4.2.2引脚锁定 (5)4.3设备与器件明细表 (7)4.4调试 (7)4.4.1软件调试 (7)4.4.2硬件调试 (7)5总结与致谢 (8)5.1总结与思考 (8)5.2致谢 (8)6 参考文献 (9)通用十进制减法器1 设计要求1、用VHDL硬件描述语言设计4位的BCD码全减器;2、以4位BCD码全减器为模块设计两位十进制数的减法。

3、用数码管显示相减的结果。

2 方案论证与对比2.1 方案一方案一,通过VHDL语言设计一个4位的BCD码全减器,以其作为底层文件,然后建立一个顶层文件,调用这个底层文件设计出双4位的BCD码全减器,最后结果通过译码电路译为7段显示输出。

EDA实验报告实验一:一位二进制全减器的设计

EDA实验报告实验一:一位二进制全减器的设计

实验一、一位二进制全减器的设计一、实验目的:(1)掌握Quartus II 的VHDL 文本设计的全过程;(2)熟练和掌握EDA设计流程;熟悉简单组合电路的设计,掌握系统仿真,学会分析硬件测试结果。

(3)学习PH-1V型实验装置上发光二极管和按键的使用方法。

二、实验内容与要求:(1)用文本方法实现半减器,再利用半减器完成全减器的设计,熟悉层次设计概念;(2)给出此项设计的仿真波形;(3)选择实验电路NO.1验证, 用发光管指示显示结果。

三、设计原理:(1)半减器真值表:xx yy Diff1 S_out10 0 0 00 1 0 11 0 0 01 1 0 0(表中Diff1表示本位向高位的借位,S_out1表示本位)(2)全减器真值表:x y Sub_in diffr Sub_out0 0 0 0 00 0 1 1 10 1 0 1 10 1 1 0 11 0 0 1 01 0 1 0 01 1 0 0 01 1 1 1 1(表中Sub_in表示低位向本位的借位,diffr表示本位向高位的借位,Sub_out表示本位)四、实验程序:(1)对半减器进行描述:(2)对全减器进行原理图编辑:五、实验步骤:1.建立工作库文件夹和编辑设计文件(1)在D盘下建立一个文件夹保存工程文件;(2)打开QuartusII,建立新的VHDL文件,再打开的页面下输入程序。

2.编译过程(1)输入完程序之后逐个编译(2)逐个编译无错之后进行全程编译3.系统仿真(1)建立新的波形激励文件(2)在波形编辑器窗口添加节点(3)通过Edit->End Time 来设定仿真结束时间(4)点击save保存(5)通过Tools下的Simulator Tools项进行仿真,然后观察输出波形。

4.引脚锁定(1)通过Assignment->Assignment Editor->Pin查找到所有的引脚(2)选择各个输入输出信号来锁定到不同引脚,进行全编译。

EDA课程设计_一位全加器的设计

EDA课程设计_一位全加器的设计

EDA课程设计一位全加器的设计The design of one bit full adder学校:兰州交通大学学院:电子与信息工程学院班级:姓名:学号:指导老师:成绩:摘要:本设计主要是利用VHDL语言设计一个一位全加器,它由半加器和或门两个模块组成。

两个模块通过顶层元件例化连接到一起。

几个模块组成的整体能够实现全加器的功能,对所给数据,能够准确快速地计算出其结果.具体的该设计利用VHDL语言使用文本输入,新建工程,通过设计输入、编译、仿真完成各种模块设计,然后生成元器件,再根据元件例化完成各部分的整合,从而形成一个完整的全加器,功能上很好地被满足。

关键字:全加器元件例化Abstract:This design primarily uses VHDL language to design the one bit full adder, which is composed of two half adder and a OR gate. The two modules are connected by top Component instance. Finally, the whole of several parts achieve the function of full adder. For given dates, it can calculate its consequence accurately and quickly.In detail, the design uses text input method by VHDL language to create new projects. By designing the input, compile, simulate, it complete various modules design and generate new components. Then it forms a complete one bit full adder by accomplishing the integration of all parts, according to component instance. And the function can be well satisfied.Key word:full adder component instance一.原理(说明)在计算机中2个二进制数之间的加减乘除算术运算都是由若干加法运算实现的.全加器是算术逻辑运算的重要组成部分,对其深入探索研究有重要的意义。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档