FPGA4位全加器的设计
实验一 4位全加器的设计(1)

实验一4位全加器的设计一、实验目的:1 熟悉QuartusⅡ与ModelSim的使用;2 学会使用文本输入方式和原理图输入方式进行工程设计;3 分别使用行为和结构化描述方法进行四位全加器的设计;4 理解RTL视图和Technology Map视图的区别;5 掌握简单的testbench文件的编写。
二、实验原理:一个4位全加器可以由4个一位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的进位输入信号cin相接。
三、实验内容:1.QuartusII软件的熟悉熟悉QuartusⅡ环境下原理图的设计方法和流程,可参考课本第4章的内容,重点掌握层次化的设计方法。
2.设计1位全加器原理图设计的原理图如下所示:VHDL源程序如下(行为描述):library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity f_add_bev is(A : in std_logic;B : in std_logic;CIN : in std_logic;S : out std_logic;CO : out std_logic);end entity;architecture bev of f_add_bev isbegin(CO,S)<=('0',A)+('0',B)+('0',CIN);end bev;VHDL源程序如下(行为描述)的RTL与technology map视图VHDL源程序如下(数据流描述):library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity f_add_fl is(A : in std_logic;B : in std_logic;CIN : in std_logic;S : OUT std_logic;CO : out std_logic);end entity;architecture fl of f_add_fl isbeginS<=A XOR B XOR CIN;CO<=((A XOR B)AND CIN)OR(A AND B);end fl;VHDL源程序如下(数据流描述)的RTL与technology map视图:VHDL源程序如下(结构化描述):library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity f_add_con isport(A : in std_logic;B : in std_logic;CIN : in std_logic;S : OUT std_logic;CO : out std_logic );end entity;architecture con of f_add_con is COMPONENT hadd_vhdPORT(a : IN STD_LOGIC;b : IN STD_LOGIC;co : OUT STD_LOGIC;s : OUT STD_LOGIC );END COMPONENT;SIGNAL S1:STD_LOGIC;SIGNAL CO1:STD_LOGIC;SIGNAL CO2:STD_LOGIC;beginh_add1 : hadd_vhdport map(a => a,B => B,S => S1,CO => CO1);h_add2 : hadd_vhdport map(a => S1,B => CIN,S => S,CO => CO2);CO<=CO1 OR CO2;end con;VHDL源程序如下(结构化描述)的RTL与technology map视图:Testbench文件源程序如下:LIBRARY cycloneiii ;LIBRARY ieee ;USE cycloneiii.cycloneiii_components.all ;USE ieee.std_logic_1164.all ;ENTITY f_add_fl_tb ISEND ;ARCHITECTURE f_add_fl_tb_arch OF f_add_fl_tb ISSIGNAL A : STD_LOGIC :='0';SIGNAL CO : STD_LOGIC ;SIGNAL CIN : STD_LOGIC :='0'; SIGNAL B : STD_LOGIC :='0'; SIGNAL S : STD_LOGIC ;COMPONENT f_add_flPORT (A : in STD_LOGIC ;CO : buffer STD_LOGIC ;CIN : in STD_LOGIC ;B : in STD_LOGIC ;S : buffer STD_LOGIC );END COMPONENT ;BEGINDUT : f_add_flPORT MAP (A => A ,CO => CO ,CIN => CIN ,B => B ,S => S ) ;A<=NOT A AFTER 0.25US;B<=NOT B AFTER 0.5US;CIN<=NOT CIN AFTER 1US;END ;功能仿真波形如下:时序仿真波形如下:3.利用层次化原理图方法设计4位全加器(1)生成新的空白原理图,作为4位全加器设计输入(2)利用已经生成的1位全加器作为电路单元,设计4位全加器。
基于FPGA的四位加法器设计

基于FPGA的四位加法器设计4位加法器设计。
取开发板上的4位按键作为4位被加数,取4位拨码开关作为4位被加数,其中8个led灯取5位作为输出结果,led0-led3作为相加的结果,led4作为进位(LED亮表示低电平0,LED灭表示高电平1,)数码管以十进制数显示被加数,加数和相加的结果。
包括vhdl文件、和vwf文件。
利用两组按键作为两个加数输入,用数码管做加数显示和结果显示,开发板上只有4个数码管,但加数都是两位的,所以只能做轮流显示,用“=”键做显示切换。
程序如下:library ieee;use ieee.std_logic_unsigned.all;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity adder_4 isport(clk:in std_logic; --时钟输入,应该输入分频后的clkenter:in std_logic; --显示切换,可以理解位“=”键clear:in std_logic; --清除键,预留接口可扩展key_num1:in std_logic_vector(3 downto 0); --加数1key_num2:in std_logic_vector(3 downto 0); --加数2duan:out std_logic_vector(6 downto 0); --输出结果wei:out std_logic_vector(3 downto 0);led5:out std_logic_vector(4 downto 0) --led结果显示);end entity;architecture fun of adder_4 issignal num1,num2:std_logic_vector(3 downto 0); --中间信号定义signal add_num1: integer range 15 downto 0;signal add_num2: integer range 15 downto 0;signal add_sum: integer range 30 downto 0;signal ten_data:integer range 9 downto 0;signal add_num1ge,add_num1shi,add_num2ge,add_num2shi,sumge,sumshi:integer range 9 downto 0;signal wei_data:integer range 0 to 3;beginduan<="1000000"when ten_data=0 else --显示部分,数码管共阳"1111001"when ten_data=1 else"0100100"when ten_data=2 else"0110000"when ten_data=3 else"0111001"when ten_data=4 else"0010010"when ten_data=5 else"0000010"when ten_data=6 else"1111000"when ten_data=7 else"0000000"when ten_data=8 else"0010000";process(clk,clear,enter,key_num1,key_num2,num1,num2,add_num1ge,add_num1shi,add_n um2ge,add_num2shi,sumge,sumshi)beginif clear = '0' thenadd_num1<=0;add_num2<=0;add_sum<=0;else--if key_num1/="1111" or key_num2/="1111" thennum1<=not key_num1;num2<=not key_num2;--加数处理,二进制转十进制。
四位全加器实验Verilog

实验四四位全加器一、实验目的l. 用组合电路设计4位全加器。
2.了解Verilog HDL语言的行为描述的优点。
二、实验原理4位全加器工作原理1)全加器除本位两个数相加外,还要加上从低位来的进位数,称为全加器。
被加数Ai、加数Bi从低位向本位进位Ci-1作为电路的输入,全加和Si与向高位的进位Ci 作为电路的输出。
能实现全加运算功能的电路称为全加电路。
全加器的逻辑功能真值表如表中所列。
2)1位全加器一位全加器(FA)的逻辑表达式为:S=A⊕B⊕Cin;Co=AB+BCin+ACin 其中A,B为要相加的数,Cin为进位输入;S为和,Co是进位输出;这两幅图略微有差别,但最后的结果是一样的。
3)4位全加器4位全加器可看作4个1位全加器串行构成, 具体连接方法如下图所示:采用Verilog HDL语言设计该4位全加器,通过主模块调用子模块(1位全加器)的方法来实现。
三、实验步骤四、实验连线K1-K4:14-11K5-K8:18-15L5-L8:7-10VIJN:83L4:64KHZ:80五、心得体会首先,实现这一段全加器代码并不难,但是由于困惑给的三个时钟输入,没有太懂意思,所以只写了全加器控制LED灯的代码;后来问清楚后,运行全加器代码,有错误,原来是建文件时用的是verilog hdl,我建的是其他类型的;后来还有错,原来是把冒号打成分号;编译成功后,LED不亮,后来发现是硬件老化,换了箱子。
这一部分做好后,我准备把控制声音的加上去,本来准备再加一个模块,可是不能有两个顶层块,就对主模块做了补充,用case命令调用不同的状态,因为时间紧迫,所以代码写得比较简单,没有用经典的分频代码。
这里附一小段,是我在研究分频控制时看懂的网上的经典分频代码,适合乐曲自动播放等高级的实现,仅供分享assign preclk=(divider==16383)?1:0;//divider==16383,preclk=1always @(posedge clk) //基频上升沿触发beginif(preclk) //preclk=1divider=origin;elsedivider=divider+1;endalways @(posedge preclk) //调整占空比beginspeaker=~speaker; //2 分频产生方波信号end这部分实现了分频功能,其中origin+divider=16384=2^14,这个数根据自己的需要而定。
课题 四位全加器

课题 四位全加器
一、课题目的
1.用组合电路设计4位全加器。
2.了解VHDL 语言的行为描述的优点。
3.初步掌握系统内部STD_LOGIC_UNSIGNED 包的调用。
二、课题原理
4位全加器可看作4个1位全加器串行构成,具体连接方法如下图所示: 由1位全加器构成4位全加器连接示意图
采用VHDL 语言设计时调用其附带的程序包,其系统内部会自行生成此结构。
三 、课题内容
1. 用VHDL 语言设计4位全加器。
2. 锁定引脚,并下载验证之。
3. 不调用包,用户自行按示意图进行设计,体会调用系统包的便利性。
四、设计提示
1.调用STD_LOGIC_UNSIGNED 包,可以使用户在更高层次上进行设计。
五、课题报告要求
1. 叙述所设计的4位全加器工作原理。
2. 写出1位全加器的VHDL 语言源程序。
3、写出心得体会。
eda课程设计论文4位全加器

eda课程设计论文4位全加器一、教学目标本课程的目标是让学生理解并掌握全加器的工作原理和设计方法,能够运用数字逻辑设计出功能完整的全加器。
知识目标:使学生了解全加器的功能和作用,理解其内部电路的工作原理,掌握全加器的真值表和布尔表达式。
技能目标:培养学生运用数字逻辑设计简单电路的能力,能够独立完成全加器的设计和仿真。
情感态度价值观目标:培养学生对电子技术的兴趣,提高学生解决问题的能力,培养学生的创新精神和团队协作精神。
二、教学内容本课程的教学内容主要包括全加器的功能和工作原理、全加器的真值表和布尔表达式、全加器的设计和仿真。
首先,讲解全加器的功能和作用,通过具体的实例让学生了解全加器在计算机中的重要性。
然后,讲解全加器的内部电路工作原理,使学生理解全加器是如何实现加法的。
接下来,介绍全加器的真值表和布尔表达式,让学生掌握全加器的工作原理。
最后,讲解全加器的设计和仿真方法,培养学生运用数字逻辑设计电路的能力。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法。
首先,通过讲授法向学生传授全加器的理论知识,使学生了解全加器的基本概念和工作原理。
然后,通过讨论法引导学生进行思考和讨论,提高学生的理解能力。
接下来,通过案例分析法分析实际案例,使学生了解全加器在计算机中的应用。
最后,通过实验法让学生动手设计和仿真全加器,提高学生的实践能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备适当的教学资源,包括教材、参考书、多媒体资料和实验设备。
教材:选用《数字逻辑设计》作为主教材,系统地介绍全加器的理论知识。
参考书:推荐《计算机组成原理》等参考书,供学生深入学习和参考。
多媒体资料:制作全加器的原理讲解和设计过程的视频,通过动画和图像等形式直观地展示全加器的工作原理。
实验设备:准备数字逻辑设计实验室,提供全加器的设计和仿真实验所需设备。
4位全加器verilog课程设计

4位全加器verilog课程设计一、课程目标知识目标:1. 理解4位全加器的原理和功能,掌握其Verilog硬件描述语言实现方法。
2. 学习并掌握数字电路中加法器的基本结构和工作原理。
3. 掌握Verilog模块化编程,能够实现并测试4位全加器的基本功能。
技能目标:1. 能够运用Verilog语言编写4位全加器的代码,并进行功能仿真。
2. 学会使用硬件描述语言进行数字电路的设计,提高实际问题解决能力。
3. 能够对4位全加器进行调试和优化,提升编程实践技能。
情感态度价值观目标:1. 培养学生的团队合作意识,提高学生在项目实践中的沟通与协作能力。
2. 增强学生对数字电路设计领域的兴趣,激发学生的创新精神。
3. 引导学生树立正确的价值观,认识到科技发展对社会进步的重要性。
课程性质:本课程为电子信息工程及相关专业高年级的数字电路设计课程,旨在通过4位全加器的Verilog实现,让学生掌握数字电路设计的基本方法和实践技能。
学生特点:学生已具备一定的数字电路基础和Verilog编程知识,具备分析问题和解决问题的能力。
教学要求:注重理论与实践相结合,鼓励学生积极参与课堂讨论,培养学生的动手能力和实际操作技能。
通过课程学习,使学生在知识、技能和情感态度价值观方面均取得明显进步。
二、教学内容本课程教学内容主要包括以下几部分:1. 数字加法器原理回顾:介绍加法器的基本原理,重点讲解4位全加器的工作流程和关键特性。
- 教材章节:数字电路基础,第3章第2节。
2. Verilog硬件描述语言基础:复习Verilog的基本语法,强调模块化编程方法。
- 教材章节:硬件描述语言Verilog,第4章。
3. 4位全加器的Verilog设计:- 设计原理:讲解4位全加器的设计思路和实现方法。
- 代码编写:引导学生编写4位全加器的Verilog代码,并进行模块化设计。
- 教材章节:数字电路设计,第5章第3节。
4. 功能仿真与调试:- 介绍仿真工具和仿真方法,指导学生进行4位全加器的功能仿真。
四位全加器版图课程设计

四位全加器版图课程设计一、课程目标知识目标:1. 让学生理解四位全加器的原理,掌握其功能、结构和操作方法。
2. 使学生掌握数字电路中加法器的基本概念,了解四位全加器在数字系统中的应用。
3. 帮助学生掌握二进制数加法运算的规则,并能运用四位全加器进行简单的二进制加法计算。
技能目标:1. 培养学生运用所学知识,分析并设计简单的四位全加器电路。
2. 提高学生动手实践能力,能够正确搭建四位全加器电路,并进行调试。
3. 培养学生运用四位全加器解决实际问题的能力。
情感态度价值观目标:1. 培养学生对数字电路的兴趣,激发他们学习电子技术的热情。
2. 培养学生严谨的科学态度,注重实验数据的准确性和可靠性。
3. 引导学生认识到数字电路在现代科技中的重要作用,增强他们的国家荣誉感和责任感。
课程性质分析:本课程为电子技术基础课程,旨在让学生掌握四位全加器的基本原理和实际应用,培养他们的实践操作能力。
学生特点分析:学生为初中年级学生,对电子技术有一定的基础,具备基本的电路知识和动手能力,但需要进一步引导和培养。
教学要求:1. 注重理论与实践相结合,让学生在实际操作中掌握四位全加器的原理和应用。
2. 采用启发式教学方法,引导学生主动思考、探索,培养他们的创新意识。
3. 注重个体差异,因材施教,使每位学生都能在课程中取得实质性的进步。
二、教学内容1. 四位全加器的基本概念与原理:- 加法器的作用与分类- 四位全加器的结构及工作原理- 二进制数加法运算规则2. 四位全加器的电路设计与分析:- 电路元件的选用与连接- 四位全加器的逻辑表达式及简化- 电路图的绘制与解读3. 四位全加器的实际应用:- 在数字系统中的应用场景- 与其他数字电路的组合应用- 实际电路搭建与调试4. 教学内容的安排与进度:- 第一课时:介绍加法器的基本概念,引导学生了解四位全加器的原理和结构- 第二课时:讲解二进制数加法运算规则,分析四位全加器的电路设计方法- 第三课时:指导学生动手搭建四位全加器电路,进行调试与优化- 第四课时:探讨四位全加器在实际应用中的组合运用,培养学生的创新意识教材关联:教学内容与教材第四章“数字电路基础”中第四节“加法器”相关内容紧密关联,涵盖了四位全加器的基本原理、电路设计、实际应用等方面,为学生提供了系统性的学习指导。
四位全加器实验报告格式

实验二 使用VHDL 语言设计语言设计四位全加器四位全加器 实验报告专业班级专业班级:: 学号学号:: 姓名姓名::一、实验目的1. 了解四位全加器的工作原理。
2. 掌握基本组合逻辑电路的设计方法。
3. 熟悉应用Quartus II 进行FPGA 开发过程和开发方法。
4. 掌握VHDL 语言程序的基本结构,初步熟悉VHDL 语言设计方法。
二、实验原理全加器是由两个加数A i 和B i 以及低位来的进位C i 作为输入,产生本位和Si 以及向高位的进位C O 的逻辑电路。
它不但要完成本位二进制码A i 和B i 相加,而且还要考虑到低一位进位C i 的逻辑。
对于输入为A i 、B i 和C i ,输出为S i 和C O 的情况,根据二进制加法法则可以得到全加器的真值表:A iB iC i S i C O 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 111由真值表得到Si 和Ci 的逻辑表达式为:S i =A i ⊕B i ⊕C iC O =(A i ⊕B i )C i +A i B i这是一位的二进制全加器,要完成一个四位的二进制全加器,只需要把四个级联起来即可。
四位全加器可以看作是4个1位全加器串行构成。
三、实验内容实验内容1.根据逻辑表达式设计一个四位二进制全加器,考虑最低位的进位输入信号。
2.写出四位全加器的VHDL 语言源代码,并下载验证。
四、预习要求1.了解VHDL 语言程序的基本结构一个VHDL 语言程序必须包含 和 两个部分,除这两个部分外,多数程序还包含 和 。
• 实体:定义电路实体的外观,电路的外部输入和输出端口,即模块的外部特征。
实体使用关键字 来定义,用 关键字来定义输入输出端口, 以 关键字结束。
• 结构体:用来描述电路的内部结构和逻辑功能。
结构体是有一个或多个并行语句构结构体是有一个或多个并行语句构成的成的,,他们的书写顺序并不代表执行顺序,这一点与其他高级语言有所不同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一、设计原理 (1)
二、设计目的 (1)
三、设计内容 (2)
四、设计步骤 (2)
五、总结与体会 (6)
4位全加器设计报告
一、设计原理
全加器是指能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位。
4位加法器可以采用4个以为全加器级连成串行进位加法器,如下图所示,其中CSA 为一位全加器。
显然,对于这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟非常可观,高速运算无法胜任。
A 和
B 为加法器的输入位串,对于4位加法器其位宽为4位,S 为加法器输出位串,与输入位串相同,
C 为进位输入(CI )或输出(CO )。
实现代码为: 全加器真值表如下:
module adder4(cout,sum,ina,inb,cin); output[3:0]sum; output cout;
input[3:0]ina,inb; input cin;
assign {count,sum}=ina+inb+cin; endmodule
二、设计目的
⑴熟悉ISE9.1开发环境,掌握工程的生成方法。
⑵熟悉SEED-XDTK XUPV2Pro 实验环境。
⑶了解Verilog HDL 语言在FPGA 中的使用。
⑷了解4位全加器的Verilog HDL 语言实现。
输 入 输 出
Xi Yi Ci-1 Si
Ci 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1
1
1
1
1
三、设计内容
用Verilog HDL语言设计4位全加器,进行功能仿真演示。
四、设计步骤
1、创建工程及设计输入。
⑴在E:\progect\目录下,新建名为count8的新工程。
⑵器件族类型(Device Family)选择“Virtex2P”
器件型号(Device)选“XC2VP30 ff896-7”
综合工具(Synthesis Tool)选“XST(VHDL/Verilog)”
仿真器(Simulator)选“ISE Simulator”
⑶下面一直next和确定。
⑷设计输入:在源代码窗口中单击右键,在弹出的菜单中选择“New Source”,在弹出的对话框中选择“Verilog Moudle”,在右端的“File name”中输入源文件名adder4,下面各步单击“Next”按钮。
⑸在弹出的源代码编辑框内输入源代码并保存。
2、功能仿真
⑴在source窗口“sources for”中选择“Behavioral Simulation”。
由“Test Bench WaveForm”添加激励源。
点击Finish。
⑵出现波形激励编辑窗口。
给ina和inb赋初始值。
⑶在processes窗口中单击“simulater behavioral model”即开始仿真,仿真结果如下。
从仿真的结果可以看出,sum=ina+inb+cin。
仿真结果正确。
3、用ChipScope进行在线调试。
⑴生成ChipScope核。
代码比较简单,这里只需要ICON和VIO两个核即可。
打开“ChipScope pro core generator”
首先是生成ICON核的过程。
在output netlist位置指向adder4所在的路径,在device family里选virtex2p 器件。
由于只用了VIO核,所以ICON的控制端口数设置为1。
之后就是就是一直确定就行,直到出现生成新的核的界面。
其次就是生成VIO核的过程。
在输入输出端口设置过程中选定异步输入端口和异步输出端口。
异步输入端口宽度根据sum(4位)、cout(1位)的总位数设定,异步输出端口根据ina (4位)、inb(4位)、cin(1位)的总位数设定。
之后也是一直确定,这样VIO核也就生成了。
⑵添加ICON核与VIO核到工程。
点击“File—Open”,在adder4所在位置找到icon_xst_example.v和vio_xst_example.v文件并打开,将ICON和VIO核的模块例化语句加到adder4.v 相应的位置,并进行修改,最后得到的代码如下:
module adder4(cout,sum);
output[3:0] sum;
output cout;
wire [3:0] ina,inb;
wire cin;
wire [35:0] control0;
wire [13:0] async_in;
wire [8:0] async_out;
icon i_icon
(
.control0(control0)
);
vio i_vio
(
.control(control0),
.async_in(async_in),
.async_out(async_out)
);
assign async_in[3:0]=ina[3:0];
assign async_in[7:4]=inb[3:0];
assign async_in[8]=cin;
assign async_in[12:9]=sum[3:0];
assign async_in[13]=cout;
assign ina[3:0]=async_out[3:0];
assign inb[3:0]=async_out[7:4];
assign cin=async_out[8];
assign {cout,sum}=ina+inb+cin;
endmodule
module icon
(
control0
);
output [35:0] control0;
endmodule
module vio
(
control,
async_in,
async_out
);
input [35:0] control;
input [13:0] async_in;
output [8:0] async_out;
endmodule
进行保存,然后在ISE里进行综合,具体操作步骤:单击“adder4.v”,在processes窗口中双击“Synthesize—XST”;如果综合没有出错,再实现,双击“Implement Design”,最后生成bit文件,双击“Generate Programming File”。
过程图为:
.
.
⑶ 在ChipScope 里观测调试
单击“adder4.v”,在Processes 窗口中选择双击“Analyze Desi gn Using Chipscope”进入ChipScope Pro Analyzer 窗口,点击图标检查连接情况,然后下载bit 文件。
由于我们没有板子只能做到这一步了。
五、总结与体会
通过这学期对FPGA 应用技术的学习,我对FPGA 这项技术也有了一定的了解。
最后通过这个大作业也是我对整个的设计过程有了更进一步的认识。
我觉得我在这次的课程设计大作业中我在以下几点收获很大。
⑴ 加深了对全加器的认识;
⑵ 了解了4位并行相加串行进位全加器的组成原理和组成框图;
⑶ 掌握了工程的生成方法,以及如何创建HDL 资源文件;
⑷ 对Verilog HDL 语言的用法有了一定的了解;
⑸ 了解了如何进行功能仿真,如何添加激励源;。