VHDL编写一位全加器参考程序

合集下载

(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

一位全加器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。

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.掌握原理图输入设计。

2.利用一位半加器实现一位全加器。

二.实验原理1.一位半加器输入a,b;输出co,so;其中co为进位输出;so为和的输出;真值表如下图所示。

2.一位全加器真值表如下图所示。

三.实验内容1.以原理图输入作为设计输入,设计半加器。

2.利用设计好的半加器,实现全加器的设计。

3.通过仿真,观察设计的正确性。

4.仿真完成后,将原理图设计转换为VHDL文件。

四.设计提示仔细阅读真值表,思考如何将半加器设计为全加器。

五.实验报告要求1.写出原理图设计。

(半加器电路原理图)(全加器原理图)2.分析设计过程。

用两个半加器构成全加器。

3.记录仿真波形,保存生成的元件以及RTL,将原理图文件转变为VHDL文件。

(全加器仿真图)(符号元件)(全加器RTL)(全加器VHDL文件)LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY work;ENTITY quan2 ISPORT(a : IN STD_LOGIC;b : IN STD_LOGIC;c : IN STD_LOGIC;ci : OUT STD_LOGIC;si : OUT STD_LOGIC);END quan2;ARCHITECTURE bdf_type OF quan2 ISCOMPONENT quanPORT(a : IN STD_LOGIC;b : IN STD_LOGIC;co : OUT STD_LOGIC;so : OUT STD_LOGIC);END COMPONENT;SIGNAL SYNTHESIZED_WIRE_0 : STD_LOGIC;SIGNAL SYNTHESIZED_WIRE_1 : STD_LOGIC;SIGNAL SYNTHESIZED_WIRE_2 : STD_LOGIC;BEGINb2v_inst : quanPORT MAP(a => a,b => b,co => SYNTHESIZED_WIRE_2,so => SYNTHESIZED_WIRE_0);b2v_inst1 : quanPORT MAP(a => SYNTHESIZED_WIRE_0,b => c,co => SYNTHESIZED_WIRE_1,so => si);ci <= SYNTHESIZED_WIRE_1 OR SYNTHESIZED_WIRE_2;END bdf_type;4.书写实验报告时要结构合理,层次分明,在分析描述的时候,注意语言的流畅。

实验五1位全加器的文本输入(波形仿真应用)

实验五1位全加器的文本输入(波形仿真应用)

实验五 1位全加器的文本输入(波形仿真用)1.实验目的通过此实验让学生逐步了解、熟悉和掌握FPGA开发软件Quartus II的使用方法及VHDL 的编程方法。

学习电路的仿真方法。

2.实验内容本实验的内容是建立一个1位全加器。

在实验箱上的按键KEY1~KEY3分别为A、B 和Cin,并通过LED1~LED3指示相应的状态。

输出Sum和Cout通过LED7和LED8指示。

3.实验原理1位全加器的真值表如下所示。

表1位全加器逻辑功能真值表4.实验步骤(1) 启动Quartus II,建立一个空白工程,然后命名为full_add.qpf。

(2) 新建full_add.vhd源程序文件,编写代码。

然后进行综合编译。

若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。

也可采用原理图文件的输入方式,建立半加器,然后在组成1位全加器。

原理图如下所示半加器设计1位全加器设计(3) 波形仿真步骤如下:① 在Quartus II 主界面中选择File → New 命名,打开新建文件对话框,从中选择V ector Waveform File ,如下图所示。

单击OK 建立一个空的波形编辑窗口。

选择File →Saveas 改名为full_add.vwf。

此时会看到窗口内出现如下图所示。

图 新建文件对话框 图 新建波形文件界面② 在上图所示的Name 选项卡内双击鼠标左键,弹出如图 所示的对话框。

在该对话框中单击Node Finder 按钮,弹出如图 所示的对话框。

图 添加节点对话框③ 按照下图所示进行选择和设置,先按下“list ”按钮,再按下“>>”按钮添加所有节点,最后按下“ok ”按钮。

图添加节点④波形编辑器默认的仿真结束时间为1us,根据仿真需要可以设置仿真文件的结束时间。

选择Edit→ End Time命令可以更改。

这里采用默认值不需更改。

图添加完节点的波形图⑤编辑输入节点的波形。

编辑时将使用到波形编辑工具栏中的各种工具。

VHDL全加器的设计

VHDL全加器的设计

实验四全加器的设计一、实验目的通过VHDL语言设计4位全加器,掌握加法器的设计方法;学习利用软件工具的模块封装(1位全加器)及连接使用方法,在软件工具的原理图输入法下完成4位全加器的设计。

二、实验原理根据数字电路全加器的理论知识,按图1所示的1位全加器的管脚图进行设计。

图 1 1位全加器管脚图三、实验内容用VHDL语言设计1位全加器,进行编译、波形仿真及器件编程。

代码一见附录,仿真图如下图 2 1位全加器功能仿真图使用原理图设计4位全加器进行编译、波形仿真及器件编程。

原理图如下仿真图如下用VHDL语言设计4位全加器,进行编译、波形仿真及器件编程,代码二见附录,仿真图如下图 5 4位全加器功能仿真图附录代码一、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity swqjq isport (a,b:in std_logic;ci:in std_logic;co:out std_logic;s:out std_logic);end swqjq;architecture zhang of swqjq isbeginprocess (a,b,ci)beginif(a='0'and b='0'and ci='0') thens<='0';co<='0';elsif(a='1'and b='0'and ci='0') thens<='1';co<='0';elsif(a='0'and b='1'and ci='0') thens<='1';co<='0';elsif(a='1'and b='1'and ci='0') thens<='0';co<='1';elsif(a='0'and b='0'and ci='1') thens<='1';co<='0';elsif(a='0'and b='1'and ci='1') thens<='0';co<='1';elsif(a='1'and b='0'and ci='1') thens<='0';co<='1';elses<='1';co<='1';end if;end process;end zhang;代码二、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adder4b isport ( ci:in std_logic;a,b:in std_logic_vector(3 downto 0);s:out std_logic_vector(3 downto 0);co:out std_logic);end adder4b;architecture zhang of adder4b issignal sint:std_logic_vector(4 downto 0); signal aa,bb:std_logic_vector(4 downto 0); beginaa<='0'&a(3 downto 0);bb<='0'&b(3 downto 0);sint<=aa+bb+ci;s(3 downto 0)<=sint(3 downto 0);co<=sint(4);end zhang;。

1位全加器的设计max

1位全加器的设计max

实验三1位全加器的设计一、实验目的:熟悉Alter公司的Max+Plus II软件,掌握采用EDA技术进行设计的过程,学会使用原理图和VHDL语言的两种方法进行电路设计。

二、实验内容:1、编写2输入或门的VHDL程序。

2、编写半加法器的VHDL程序。

3、采用原理图方法设计全加器。

4、进行逻辑编译、综合和优化。

5、进行软件仿真。

三、实验步骤:1、建立新目录:如e:\example;2、第一次运行MAX+PLUS II——进入MAX+PLUS II双击MAX+PLUS II 图标:或:开始→程序→Altera→3、创建VHDL源程序A:创建2输入或门的VHDL源程序:ORM2.VHD(1)生成一个新的文本文件:按屏幕上方的按钮,或选择“file”→“new…”,出现对话框:选择Text Editor file(文本编辑方式),然后按下OK按钮,会出现一个无标题的文本编辑窗口——Untitled-Text Editor。

(2)在编文本辑窗口中输入2输入或门的VHDL源程序:ORM2.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ORM2 ISPORT (A,B: IN STD_LOGIC;C: OUT STD_LOGIC);END ORM2;ARCHITECTURE ART1 OF ORM2 ISBEGINC<=A OR B;END ARCHITECTURE ART1;(3)保存文件:按工具栏中的按钮,或选择File→Save,出现对话框:在File Name(文件名)栏中输入文件名,如ORM2.vhd在驱动器选择栏选刚刚建立的项目路径所在的驱动器,如e:在路径栏选择所建立的项目路径,如:example在Automatic Extension(自动扩展名)的下拉菜单中选择.vhd按键,就把输入的文件存放在了目录e:\example中了。

此时,所有的标识符都变色。

一位全加器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。

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

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

1用VHDL设计的一位二进制全加器的示例程序library ieee;use ieee.std_logic_1164.all;entity adder is port(a, b,ci : in bit;sum : out bit);end adder;architecture a of adder isbeginsum<=a xor b xor ci;co<=((a or b) and ci) or ( a and b);end a;2用vhdl语言实现一个脉冲信号的十分频ibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity div isgeneric (duty : integer := 5);port (clk : in std_logic;Q : out std_logic);end div ;architecture divlo of div isconstart period : integer := 10;signal count : integer range 0 to period-1;beginprocess (clk)beginif rising_edge ( clk ) thenif count < duty thenQ <= …0‟ ;count <= count+1;else if count < period-1 thenQ <= …1‟ ;count <= count+1 ;else count <= …0‟ ;end if ;end if ;end process ;end divlo ;3用vhdl 语言if 语句来实现2选1数据选择器ibrary ieee;use ieee.std_logic_1164.all;entity choose isport (d0;d1,sel : in std_logic;y : out std_logic );end choose ;architecture arc of choose isbegin process(d0,d1,sel)beginif (sel <= …1‟) theny <= d1;else y <= d0 ;end if ;end process ;end arc;4用VHDL实现3-8译码器ibrary ieee;use ieee.std_logic_1164.all;entity encoder isport ( a : in std_logic_vector ( 2 downto 0 );b : out std_logic_vector ( 7 downto 0));end encoder ;architecture behav of encoder issignal indata : std_logic_vector ( 2 downto 0 ); beginprocess (a)beginindata <= a(2)&a(1)&a(0);case indata iswhen “000”=>b<=”00000001”;when “001”=>b<=”00000010”;when “010”=>b<=”00000100”;when “011”=>b<=”00001000”;when “100”=>b<=”00010000”;when “101”=>b<=”00100000”;when “110”=>b<=”01000000”;when “111”=>b<=”10000000”;when others =>b<=”XXXXXXXX”;end case ;end process ;end behav ;。

大连理工大学软件学院计算机组成原理实验一位全加器VHDL语言实现

大连理工大学软件学院计算机组成原理实验一位全加器VHDL语言实现

大连理工大学软件学院计算机组成原理实验一位全加器VHDL语言实现第一篇:大连理工大学软件学院计算机组成原理实验一位全加器VHDL语言实现----------------------Company:--Engineer:----Create Date:18:35:51 04/08/2013--Design Name:--Module Name:testssFile Created--Additional Comments:----------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;----Uncomment the following library declaration if instantiating----any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity testss isPort(end testss;a,b,ci : inSTD_LOGIC;s,c : outSTD_LOGIC);architecture Behavioral of testss issignal x,y:std_logic;beginx <= a xor b;y <= x and ci;s <= x xor ci;c <= y or(a and b);end Behavioral;第二篇:计算机组成原理实验ALU设计module ALU(ALU_OP,AB_SW,F_LED_SW,LED);input[2:0] ALU_OP,AB_SW,F_LED_SW;output[7:0] LED;reg[7:0] LED;reg[31:0] A,B,F;reg OF,ZF;always@(*)beginendalways@(*)beginZF=0;OF=0;case(ALU_OP)3'b000: begin F=A&B;end 3'b001: begin F=A|B;end 3'b010: begin F=A^B;end 3'b011: begin F=~(A|B);end 3'b100: begin {OF,F}=A+B;OF=OF^F[31];end 3'b101: begin {OF,F}=A-B;OF=OF^F[31];end 3'b110: begin F=A3'b000: begin A=32'h0000_0000;B=32'h0000_0000;end 3'b001: begin A=32'h0000_0003;B=32'h0000_0607;end 3'b010: begin A=32'h8000_0000;B=32'h8000_0000;end 3'b011: begin A=32'h7FFF_FFFF;B=32'h7FFF_FFFF;end 3'b100: begin A=32'h8000_0000;B=32'hFFFF_FFFF;end 3'b101: begin A=32'hFFFF_FFFF;B=32'h8000_0000;end 3'b110: begin A=32'h1234_5678;B=32'h3333_2222;end 3'b111: begin A=32'h9ABC_DEF0;B=32'h1111_2222;end endcase endcase if(F==32'b0)ZF=1;endalways@(*)beginend case(F_LED_SW)3'b000: LED=F[7:0];3'b001: LED=F[15:8];3'b010: LED=F[23:16];3'b011: LED=F[31:24];default:begin LED[7]=ZF;LED[0]=OF;LED[6:1]=6'b0;end endcaseendmodule 管脚配置NET “AB_SW[0]” LOC = T10;NET “AB_SW[1]” LOC = T9;NET “AB_SW[2]” LOC = V9;NET “ALU_OP[0]” LOC = M8;NET “ALU_OP[1]” LOC = N8;NET “ALU_OP[2]” LOC = U8;NET “F_LED_SW[0]” LOC = V8;NET “F_LED_SW[1]” LOC = T5;NET “F_LED_SW[2]” LOC = B8;NET “LED[0]” LOC = U16;NET “LED[1]” LOC = V16;NET “LED[2]” LOC = U15;NET “LED[3]” LOC = V15;NET “LED[4]” LOC = M11;NET “LED[5]” LOC = N11;NET “LED[6]” LOC = R11;NET “LED[7]” LOC = T11;寄存器 module jicunqi(input Clk, input Reset, input [4:0] Reg_Addr, input Write_Reg, input [1:0] Sel, input AB, output reg [7:0] LED);reg [31:0] W_Data;wire [31:0] R_Data_A,R_Data_B,LED_Data;REGRU1(Clk,Reset,Reg_Addr,Reg_Addr,Reg_Addr,W_Data,Write_Reg,R_Data_A,R_Data_B);assign LED_Data=AB?R_Data_A : R_Data_B;always @(*)beginW_Data=32'h0000_0000;LED=8'b0000_0000;if(Write_Reg)begincase(Sel)2'b00: W_Data= 32'h1234_5678;2'b01: W_Data= 32'h89AB_CDEF;2'b10: W_Data= 32'h7FFF_FFFF;2'b11: W_Data= 32'hFFFF_FFFF;endcase end elsebegincase(Sel)2'b00: LED=LED_Data[7:0];2'b01: LED=LED_Data[15:8];2'b10: LED=LED_Data[23:16];2'b11: LED=LED_Data[31:24];endcase end end endmodule `timescale 1ns / 1ps // REG.v module REG(input Clk, input Reset, input [4:0] R_Addr_A, input[4:0] R_Addr_B, input [4:0] W_Addr, input [31:0] W_Data, input Write_Reg, output [31:0] R_Data_A, output [31:0] R_Data_B);reg [31:0] REG_Files[0:31];integer i;assign R_Data_A=REG_Files[R_Addr_A];assign R_Data_B=REG_Files[R_Addr_B];always @(posedge Clk or posedge Reset)beginif(Reset)beginfor(i=0;i<=31;i=i+1)REG_Files[i]<=32'h0000_0000;endelsebeginif(Write_Reg)beginREG_Files[W_Addr]<=W_Data;end end end endmodule管脚配置NET “Clk” LOC=“C9”;NET “Reset” LOC=“D9”;NET “Reg_Addr[4]” LOC=“T5”;NET “Reg_Addr[3]” LOC=“V8”;NET “Reg_Addr[2]” LOC=“U8”;NET “Reg_Addr[1]” LOC=“N8”;NET “Reg_Addr[0]” LOC=“M8”;NET “Write_Reg” LOC=“V9”;NET “Sel[1]” LOC=“T9”;NET “Sel[0]” LOC=“T10”;NET “AB” LOC=“A8”;NET “LED[7]” LOC=“T11”;NET “LED[6]” LOC=“R11”;NET “LED[5]” LOC=“N11”;NET “LED[4]” LOC=“M11”;NET “LED[3]” LOC=“V15”;NET “LED[2]” LOC=“U15”;NET “LED[1]” LOC=“V16”;NET “LED[0]” LOC=“U16”;第三篇:_计算机组成原理实验2计算机组成原理实验日志实验题目:进位、移位控制实验实验目的:(1)了解带进位控制的运算器的组成结构;(2)验证带进位控制的运算器的功能。

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

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

A
8
五、实验步骤
(一)半加器的设计
3、管脚分配
1)点击 Assignments 菜单下面的 Assignment Editor,进入到 引脚分配窗口。将弹出的窗口中的 All 改成 pin ,再点击 List, 在 Nodes Found窗口会出现所有信号的名称,点击中间的按钮则 Selected Nodes 窗口下方出现被选择的端口名称。双击 OK 按钮, 完成设置。进入管脚分配窗口。如下图所示:
A
14
五、实验步骤
(二)全加器的设计
4、对设计文件进行仿真(步骤同“半加器的设计”)
全加器中Ci的周期是b的两倍,b的周期是a的两倍。实验仿真波形如下 所示:
5、从设计文件到目标器件的加载(步骤同“半加器的设计”)
A
15
五、实验步骤
(三)补充“全加器的设计”。从设计文件到模块符号的 创建。
实验要求创建文件时底层文件用文本输入,顶层文件用图形输 入,即需要将底层的已经设计好的文本文件生成一个模块符号文件作 为自己的功能模块符号在顶层调用,该符号就像图形设计文件中的任 何其它宏功能符号一样可被高层设计重复调用。
2)依照“硬件与 FPGA 的管脚连接表”分配对应的输入管脚名 ,依照“LED灯与FPGA管脚连接表”分配对应的输出管脚名。本次实 验的分配关系是:(输入端 a、b分别对应的 FPGA 管脚名为 H8、J8 ,输出端 c、s分别对应的 FPGA 管脚名为 G13 、G15),如下图所 示:
3)分配完管脚后,再次进行一次全编译,使分配的管脚有效。
5)指定仿真器设置,在仿真过程中有时序仿真和功能仿真之分,在这里 介绍功能仿真。在 QUARTUSII软件中选择 Processing>Simulator Tool 命 令,打开仿真器工具窗口,如下图所示。

vhdl编程实例

vhdl编程实例

vhdl编程实例VHDL编程实例- 设计与实现一个4位的全加器在本篇文章中,我们将一步一步地回答如何设计和实现一个4位的全加器。

VHDL编程语言将是我们用于描述和模拟这个电路的工具。

第一步:理解全加器的原理在编写代码之前,我们首先需要理解全加器的原理。

全加器是一种用于对两个二进制数字进行相加的电路。

它接收三个输入信号:两个位的输入(A 和B)以及一个进位输入(C_in)。

全加器的输出结果为一个位的和(S)和一个进位输出(C_out)。

我们可以使用如下的真值表来描述全加器的输出结果:输入信号输出结果A B C_in S C_out0 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语言来描述和模拟全加器。

下面是一个简单的4位全加器的VHDL代码实现:vhdlEntity声明entity full_adder isport (A, B : in std_logic_vector(3 downto 0);C_in : in std_logic;S : out std_logic_vector(3 downto 0);C_out : out std_logic);end full_adder;Architecture声明architecture Behavioral of full_adder isbeginprocess(A, B, C_in)variable carry : std_logic;begincarry := C_in;for i in 0 to 3 loopS(i) <= A(i) xor B(i) xor carry;carry := (A(i) and B(i)) or (carry and (A(i) xor B(i)));end loop;C_out <= carry;end process;end Behavioral;在此代码中,我们首先声明了一个实体(entity)和一个架构(architecture)。

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`)逻辑操作符的组合来实现。

实验二 一位全加器实验

实验二  一位全加器实验

实验二一位全加器实验【实验环境】1. Windows 2000 或 Windows XP2. QuartusII、GW48-PK2或DE2-115计算机组成原理教学实验系统一台,排线若干。

【实验目的】1、熟悉原理图和VHDL语言的编写。

2、验证全加器功能。

【实验原理】设计一个一位全加器,能完成两个二进制位的加法操作,考虑每种情况下的进位信号,完成8组数据的操作。

【实验步骤】1.1建立工程项目1.1.1 启动QuartusⅡ1.1.3 原理图设计新建项目后,就可以绘制原理图程序了。

下面以一位全加器如图1-12所示为例,讲解原理图的编辑输入的方法与具体步骤。

图1-12 一位全加器原理图(1)执行菜单“File”→“New…”,或在工具栏中单击图标,弹出如图1-13所示的“New”对话框。

在此对话框的“Design Files”项中选择“Block Diagram/Schematic File”,在单击“OK”按钮,QuartusⅡ10.0的主窗口进入如图1-14所示的原理图工作环境界面。

图1-13 “New”对话框(2)在如图1-14所示的原理图工作环境界面中单击图标或在原理图编辑区的空白处双击鼠标或在原理图编辑区的空白处右键单击在弹出的菜单中选择“Insert”中的任意一个,弹出如图1-15所示的元件输入对话框,在“Name”栏中直接输入所需元件名或在“Libraries: ”的相关库中找到合适的元件,再单击“OK”按钮,然后在原理图编辑区中单击鼠标左键,即可将元件调入原理图编辑区中。

为了输入如图1-12所示的原理图,应分别调入and2、xor2、or3、input、output。

对于相同的器件,可通过复制来完成。

例如3个and2门,器操作方法是,调入一个and2门后,在该器件上单击鼠标右键,在弹出的菜单中选择“Copy”命令将其复制,然后在合适的位置上右键,在弹出的菜单中选择“Paste”命令将其粘帖即可。

1数电实验PLD VHDL 一位全加器 樊

1数电实验PLD  VHDL 一位全加器 樊

用Quartus II软件原理图编写一位全加器编写:樊伟敏1. 用Quartus II软件原理图设计一位全加器一位全加器电路图如图1所示,和与进位表达式如表1所示。

图1 二选一数据选择电路表1 和与进位表达式2. 新建原理图文件新建项目add1a,出现如图2所示的界面。

执行【File\New ...】菜单命令,进入如图3所示的新建文件类型选择对话框。

选择Design Files中的block Diagram/Schematic file项。

点击【OK】按钮,进入如图4所示的新建原理图窗口。

图2 新建项目add1a界面图3 新建文件类型选择对话框图4 新建原理图窗口3. 绘制原理图3.1放置元件符号点击绘图工具图标,弹出如图5所示的图形符号对话框,在【Libraries:\primitives\logic】下选择【and2】,在右侧的图形窗口出现二输入与门,勾选【Repeat insert mode】可重复放置该元件符号。

点击【OK】按钮,将其放置到图4所示的原理图窗口,按键盘【Esc】可退出重复放置元器件符号。

同理放置异或门【XOR2】和或门【OR2】。

然后,如图6所示在图形符号对话框中,选取【Libraries:\primitives\pin】下的输入引脚【input】及输出引脚【output】放置到图4所示的原理图窗口。

如图7所示为放置元件符号完成后的原理图窗口。

图5 图形符号对话框(选取二输入与门) 图6 图形符号对话框(选取输入引脚)图7 放置元件符号完成后的原理图窗口3.2 绘制连线点击连线工具图标,在需要连线的起点位置,按住鼠标左键开始画线,拖动鼠标直到绘线终点后释放鼠标左键。

在绘图过程中可使用缩放工具图标,缩放原理图的某个区域。

图8所示完成绘制导线状态。

图8 完成绘制导线3.3 修改引脚名称双击引脚图形符号,弹出如图9所示的对话框,将【pin_name】修改成对应的引脚名称。

同理将所有的引脚分别修改成A、B、C0、S和C1。

实验二1位全加器的设计(VHDL)

实验二1位全加器的设计(VHDL)

实验二1位全加器的设计(VHDL)
实验二1位全加器的设计(VHDL)
一、实验目的
1、掌握MAX+PLUSII 10.2软件的使用流程。

2、掌握设计文本输入方法。

3、熟悉ZY11EDA13BE型实验箱的开关按键模块,LED显示模块。

二、实验内容
在MAX+PLUSII 10.2软件中使用文本输入方法设计并实现一个1位全加器。

三、实验仪器
1、ZY11EDA13BE型实验箱通用编程模块,配置模块,开关按键模块,LED显示模块。

2、并口延长线,JTAG延长线。

3、安装MAX+PLUSII 10.2软件的PC机。

四、实验原理
根据实验一的全加器原理,用VHDL分别描述半加器和或门,使用元件例化语句实现全加器的描述。

五、实验注意事项:
实验指导书中所有实验内容都是针对主板系统的核心芯片EP1K30QC208-2来设计的,实验原理中提供了管脚分配情况,管脚分配好后必须通过成功编译才可以下载配置。

六、实验步骤:
步骤1:为本项工程设计建立文件夹。

步骤2:输入设计项目原理图,并存盘。

步骤3:将设计项目设置成工程文件:
步骤4:选择目标器件并编译
步骤5:时序仿真
步骤6:创建默认的逻辑符号:选莱单File\Create Default Symbol(只在底层设计中使用)。

步骤7:引脚锁定
步骤8:连接设备:
步骤9:下载配置文件到目标芯片。

步骤10:逻辑验证
七、实验报告
1、列出半加器和全加器的真值表。

2、列举出不同方式的VHDL1位全加器的描述。

EDA实验一 1位全加器和四位全加器的设计

EDA实验一 1位全加器和四位全加器的设计

实验一1位全加器和四位全加器的设计一、实验目的1、掌握Quartus Ⅱ6.0软件使用流程。

2、初步掌握VHDL的编程方法。

3、掌握图形层次设计方法;4、掌握全加器原理,能进行多位加法器的设计。

二、实验原理(一位全加器的逻辑表达式为:sum=a^b^Cl;Ch= a&b|(a^b)&Cl.(2)四位加法器加法器是数字系统中的基本逻辑器件。

多位加法器的构成有两种方式:并行进位和串行进位方式。

并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。

通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。

三、实验连线(1)一位全加器1、将EP2C5适配板左下角的JTAG用十芯排线和万用下载区左下角的SOPC JTAG 口连接起来,万用下载区右下角的电源开关拨到SOPC下载的一边2、将JPLED1短路帽右插,JPLED的短路帽全部上插。

3、请将JP103的短路帽全部插上,,打开实验箱电源。

( 2 ) 四位加法器1、将EP2C5适配板左下角的JTAG用十芯排线和万用下载区左下角的SOPC JTAG 口连接起来,万用下载区右下角的电源开关拨到SOPC下载的一边2、JPLED1短路帽右插,JPLED的短路帽全部上插。

3、请将JP103的短路帽全部插上,,打开实验箱电源。

四、实验代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY fulladder ISPORT(A,B,C1 :IN STD_LOGIC;CH,SUM : OUT STD_LOGIC);END ENTITY fulladder;ARCHITECTURE ADO OF fulladder isSIGNAL AB :STD_LOGIC;BEGINSUM<=A XOR B XOR C1;AB<=A XOR B;CH<=(A AND B) OR (AB AND C1);END ARCHITECTURE ADO;一位全加器波形如下:图4-1四位加法器波形如下:图4-2五、实验仿真过程SW1,SW2,SW3对应a,b,Cl;D101,D102分别对应sum和Ch,当结果为0时彩色LED灯熄灭,当结果为1时彩灯点亮,改变SW1,SW2,SW3的输入状态,观察实验结果。

VHDL编写一位全加器参考程序

VHDL编写一位全加器参考程序

这是茄子求别人写的参考程序,不一定能实际运行。

但是可靠性在百分之九十左右。

大家做不出来的可以参考下。

做出来的看出错误请指正。

我作为学习委员既然把答案给大家,一方面是不想影响大家平时成绩,另一方面也是希望大家可以自己看看,学习一下,不要到最后结课了着急。

所以我晚上不收打印的作业,每个人都必须亲自抄写出来。

行为描述方式LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADD11 ISPORT(A:IN STD_LOGIC;B:IN STD_LOGIC;CIN:IN STD_LOGIC;CO:OUT STD_LOGIC;S:OUT STD_LOGIC);END ADD11;ARCHITECTURE BEHAVE OF ADD11 ISBEGINPROCESS(A,B,CIN)VARIABLE N: INTEGER RANGE 0 TO 3;CONSTANT S_VECTOR:STD_LOGIC_VECTOR(0 TO 3):="1010";CONSTANT CO_VECTOR:STD_LOGIC_VECTOR(0 TO 3):="1100";BEGINN:=0;IF(A='1') THEN N:=N+1;END IF;IF(B='1') THEN N:=N+1;END IF;IF(CIN='1') THEN N:=N+1;END IF;S<=S_VECTOR(N);CO<=CO_VECTOR(N);END PROCESS;END BEHAVE;数据流描述方式LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADD2 ISPORT(A:IN STD_LOGIC;B:IN STD_LOGIC;CIN:IN STD_LOGIC;CO:OUT STD_LOGIC;S:OUT STD_LOGIC);END ADD2;ARCHITECTURE DATAFLOW OF ADD2 IS SIGNAL TMP1,TMP2:STD_LOGIC; BEGINTMP1<=A XOR B;TMP2<=TMP1 AND CIN;S<=TMP1 XOR CIN;CO<=TMP2 OR(A AND B);END DATAFLOW;结构体描述方式LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADD3 ISPORT(A:IN STD_LOGIC;B:IN STD_LOGIC;CIN:IN STD_LOGIC;CO:OUT STD_LOGIC;S:OUT STD_LOGIC);END ADD3;ARCHITECTURE STRUCTURE OF ADD3 IS COMPONENT AND2PORT(A: IN STD_LOGIC;B: IN STD_LOGIC;C: OUT STD_LOGIC);END COMPONENT;COMPONENT OR2PORT(A: IN STD_LOGIC;B: IN STD_LOGIC;C: OUT STD_LOGIC);END COMPONENT;COMPONENT XOR2PORT(A: IN STD_LOGIC;B: IN STD_LOGIC;C: OUT STD_LOGIC);END COMPONENT;SIGNAL TMP1,TMP2,TMP3:STD_LOGIC; BEGINU1:XOR2 PORT MAP(A,B,TMP1);U2:AND2 PORT MAP(TMP1,CIN,TMP2); U3:XOR2 PORT MAP(TMP1,CIN,S);U4:AND2 PORT MAP(A,B,TMP3);U5:OR2 PORT MAP(TMP2,TMP3,CO); END STRUCTURE;。

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

这是茄子求别人写的参考程序,不一定能实际运行。

但是可靠性在百分之九十左右。

大家做不出来的可以参考下。

做出来的看出错误请指正。

我作为学习委员既然把答案给大家,一方面是不想影响大家平时成绩,另一方面也是希望大家可以自己看看,学习一下,不要到最后结课了着急。

所以我晚上不收打印的作业,每个人都必须亲自抄写出来。

行为描述方式
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADD11 IS
PORT(A:IN STD_LOGIC;
B:IN STD_LOGIC;
CIN:IN STD_LOGIC;
CO:OUT STD_LOGIC;
S:OUT STD_LOGIC);
END ADD11;
ARCHITECTURE BEHAVE OF ADD11 IS
BEGIN
PROCESS(A,B,CIN)
VARIABLE N: INTEGER RANGE 0 TO 3;
CONSTANT S_VECTOR:
STD_LOGIC_VECTOR(0 TO 3):="1010";
CONSTANT CO_VECTOR:
STD_LOGIC_VECTOR(0 TO 3):="1100";
BEGIN
N:=0;
IF(A='1') THEN N:=N+1;
END IF;
IF(B='1') THEN N:=N+1;
END IF;
IF(CIN='1') THEN N:=N+1;
END IF;
S<=S_VECTOR(N);
CO<=CO_VECTOR(N);
END PROCESS;
END BEHAVE;
数据流描述方式
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ADD2 IS
PORT(A:IN STD_LOGIC;
B:IN STD_LOGIC;
CIN:IN STD_LOGIC;
CO:OUT STD_LOGIC;
S:OUT STD_LOGIC);
END ADD2;
ARCHITECTURE DATAFLOW OF ADD2 IS SIGNAL TMP1,TMP2:STD_LOGIC; BEGIN
TMP1<=A XOR B;
TMP2<=TMP1 AND CIN;
S<=TMP1 XOR CIN;
CO<=TMP2 OR(A AND B);
END DATAFLOW;
结构体描述方式
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADD3 IS
PORT(A:IN STD_LOGIC;
B:IN STD_LOGIC;
CIN:IN STD_LOGIC;
CO:OUT STD_LOGIC;
S:OUT STD_LOGIC);
END ADD3;
ARCHITECTURE STRUCTURE OF ADD3 IS COMPONENT AND2
PORT(A: IN STD_LOGIC;
B: IN STD_LOGIC;
C: OUT STD_LOGIC);
END COMPONENT;
COMPONENT OR2
PORT(A: IN STD_LOGIC;
B: IN STD_LOGIC;
C: OUT STD_LOGIC);
END COMPONENT;
COMPONENT XOR2
PORT(A: IN STD_LOGIC;
B: IN STD_LOGIC;
C: OUT STD_LOGIC);
END COMPONENT;
SIGNAL TMP1,TMP2,TMP3:STD_LOGIC; BEGIN
U1:XOR2 PORT MAP(A,B,TMP1);
U2:AND2 PORT MAP(TMP1,CIN,TMP2); U3:XOR2 PORT MAP(TMP1,CIN,S);
U4:AND2 PORT MAP(A,B,TMP3);
U5:OR2 PORT MAP(TMP2,TMP3,CO); END STRUCTURE;。

相关文档
最新文档