16位算术逻辑运算实验
ALU实验报告
算术逻辑单元实验报告一、实验目的1、掌握运算器的工作原理。
2、验证运算器的功能。
二、实验原理算术逻辑单元的主要功能是对二进制数据进行定点算术运算、逻辑运算和各种移位操作。
算术运算包括定点加减乘除运算;逻辑运算主要有逻辑与、逻辑或、逻辑异或和逻辑非操作。
ALU通常有两个数据输入端A和B,一个数据输出端Y 以及标志位等。
三、实验要求1、实验设计目标设计一个16位算术逻辑单元,满足以下要求。
(1)16位算术逻辑单元能够进行下列运算:加法、减法、加1、减1、与、或、非和传送。
用3位运算操作码OP[2..0]进行运算,控制方式如下表所示。
(2)设立两个标志寄存器Z和C。
当复位信号reset为低电平时,将这两个标志寄存器清零。
当运算结束后,在时钟clk的上升沿改变标志寄存器Z和C的值。
运算结果改变标志寄存器C、Z的情况如下:加法、减法、加1、减1运算改变Z、C;与、或、非运算改变Z,C保不变;传送操作保持Z、C不变。
因此在运算结束Z、C需要两个D触发器保存。
(3)为了保存操作数A和B,设计两个16位寄存器A和B。
当寄存器选择信号sel=0时,如果允许写信号write=1.,则在诗中clk的上升沿将数据输入dinput送入A 寄存器;当寄存器选择信号sel=1时,如果允许写信号write=1.,则在诗中clk的上升沿将数据输入dinput送入B寄存器。
(4)算术逻辑单元用一个设计实体完成。
2.顶层设计实体的引脚要求(1)clk对应试验台上的时钟(单脉冲)。
(2)reset对应实验台上的CPU复位信号CPU-RST。
(3)数据输入dinput对应试验台开关SD15~SD0。
(4)允许写信号write对应试验台开关SA5.(5)OP[2..0]对应试验台开关SA2~SA0.(6)寄存器选择信号sel对应试验台开关SA4.(7)16为运算结果result对应实验台上的指示灯A15~A0.(8)Z、C标志位对应试验台上的Z、C指示灯。
基本算数运算(DSP实验报告)
基本算数运算一、实验目的和要求加、减、乘、除是数字信号处理中最基本的算术运算。
DSP 中提供了大量的指令来实现这些功能。
本实验学习使用定点DSP 实现16 位定点加、减、乘、除运算的基本方法和编程技巧。
本实验的演示文件为exer1.out。
二、实验原理1) 定点DSP 中的数据表示方法2) 实现16 位定点加法ld temp1,a ;将变量temp1 装入寄存器Aadd temp2,a ;将变量temp2 与寄存器A相加,结果放入A中stl a,add_result ;将结果(低16 位)存入变量add_result 中3)实现16 位定点减法stm #temp1,ar3 ;将变量temp1 的地址装入ar3 寄存器stm #temp3,ar2 ;将变量temp3 的地址装入ar2 寄存器sub *ar2+, *ar3,b ;将变量temp3 左移16 位同时变量temp1 也左移16 位,然后相减,结果放入寄存器B(高16位)中,同时ar2 加1。
sth b,sub_result ;将相减的结果(高16位)存入变量sub_result 4)实现16 位定点整数乘法rsbx FRCT ;清FRCT标志,准备整数乘ld temp1,T ;将变量temp1 装入T 寄存器mpy temp2,a ;完成temp2*temp1,结果放入A寄存器(32 位)5)实现16 位定点小数乘法我们使用下列ssbx FRCT ;FRCT=1,准备小数乘法ld temp1,16,a ;将变量temp1 装入寄存器A的高16位mpya temp2 ;完成temp2 乘寄存器A的高16 位,结果在B中,同时将temp2 装入T 寄存器sth b,mpy_f ;将乘积结果的高16 位存入变量mpy_f6)实现16 位定点整数除法代码如下:ld temp1,T ;将被除数装入T 寄存器mpy temp2,A ;除数与被除数相乘,结果放入A寄存器ld temp2,B ;将除数temp2 装入B 寄存器的低16位abs B ;求绝对值stl B,temp2 ;将B 寄存器的低16 位存回temp2ld temp1,B ;将被除数temp1 装入B寄存器的低16 位abs B ;求绝对值rpt #15 ;重复SUBC 指令16 次subc temp2,b ;使用SUBC 指令完成除法运算bcd div_end,agt ;延时跳转,先执行下面两条指令,然后判断A,若A>0,则跳转到标号div_end,结束除法运算stl B,quot_i ;将商(B寄存器的低16 位)存入变量quot_i sth B,remain_i ;将余数(B 寄存器的高16 位)存入变量remain_ixor B ;若两数相乘的结果为负,则商也应为负。
16位斐波那契数列的数据通路电路
斐波那契数列是数学上一个非常有趣且重要的数列,它的特点是每个数字是前两个数字的和。
1, 1, 2, 3, 5, 8, 13, 21, 34,…,依此类推。
在这个数列中,每个数字都是前两个数字相加得到的,这个规律被称为斐波那契规律。
16位斐波那契数列的数据通路电路是指通过逻辑门电路来实现对16位斐波那契数列的计算和存储的电路。
在这个电路中,我们需要考虑如何通过逻辑门来实现对斐波那契数列的计算和存储,使得电路设计既能满足功能需求,又能保证电路的稳定性和可靠性。
我们需要考虑如何通过逻辑门来实现对斐波那契数列的计算。
在16位斐波那契数列的数据通路电路中,我们可以使用加法器来实现对前两个数字的相加,然后将结果存储下来作为下一个数字。
我们还需要考虑如何将这个计算过程进行循环,直到计算完所有需要的数字。
对于存储部分,我们可以使用寄存器来存储斐波那契数列中的每一个数字。
通过将寄存器与加法器相连接,可以实现对计算结果的存储,然后再将存储结果作为下一次计算的输入。
在16位斐波那契数列的数据通路电路设计中,我们还需要考虑如何对计算和存储的过程进行控制。
这涉及到时序逻辑的设计,我们需要考虑时钟信号的引入,以保证计算和存储的顺序正确进行。
我们还需要考虑如何设计控制信号,以确保计算和存储的过程能够按照我们的期望进行。
总结来说,16位斐波那契数列的数据通路电路设计涉及到对逻辑门、加法器、寄存器等基本逻辑组件的设计和连接,同时还需要考虑控制信号和时序逻辑的设计。
通过合理的设计和实现,能够实现对16位斐波那契数列的计算和存储,从而为数字逻辑电路的应用提供了一个实际的示例。
个人观点和理解,斐波那契数列作为一种非常特殊的数列,具有很多有趣的数学性质和应用价值,通过实现16位斐波那契数列的数据通路电路,不仅能深入理解斐波那契数列的计算规律,同时也能锻炼对数字逻辑电路设计的能力,是一个非常有意义的实践项目。
希望这篇文章能够对您有所帮助,欢迎指正交流。
用单片机语言设计16位加法计算器实验报告
湖北第二师范学院计算机学院09计应单片机课程设计实验报告课程设计名称:电子计算器课程设计单位:10计应(1)班课设小组成员:徐凡(1060310039)凡平(1060310058)彭浩(1060310045)桂银(1060310010)潘光卉(1060300033)完成时间:2012年04月02日至2012年04月 24 日单片机课程设计实验报告课程设计题目:简易计算器作品功能描述:当通过输入键盘数字时,能够在显示器上显示输出的数值,并且通过想实现的简单运算功能,实现计算器的加、减、乘、除和清零,并将结果显示出来。
小组成员工作分工:徐凡:程序主框架的构造和主要功能函数的设计。
凡平:原理图的设计和硬件的焊接。
彭浩:基本功能函数的设计(“+,-,*,/”)。
桂银:程序流程图的设计和键盘扫描程序的实现。
潘光卉:编写文档和功能测试。
硬件电路设计:本设计中我们用的是AT89C52芯片,LCD1602 (PROTEUS中为LM016L)就是那个液晶屏,因为可以显示2行16个字符,故叫做LCD1602.11.0592M或12M晶振(CRYSTAL),两者均可,但要涉及到串口需选用12MKEYPAD-SMALLCALC就是那个4X4键盘电容20~30PF(CAP),接最小电路电容10PF主要接复位电路RESPACK-8排阻,为20K的,一个引脚接正极,另8个引脚接I/O口接RES电阻10K,接复位电路实物照片:硬件原理图原理说明:1,上电后,屏幕初始化;2,计算。
按下数字键,屏幕显示要运行的第一个数字,再按下符号键,然后再按下数字键,屏幕显示要运算的第二个数字,最后按下“=”号键,屏幕上显示出计算结果。
3,如果要再次计算,可以按下“ON/C”键清零,或者继续按下数字键,即可重新计算。
键盘使用说明如下:按键功能说明:Array“+”实现两个数的相加“-”实现两个数的相减“×”实现两个数的乘积“÷”实现两个数商的运算“ON/C”计算器显示的清零和接通电源程序控制流程图:软件设计:在程序设计方法上,模块化程序设计是单片机应用中最常用的程序设计方法。
十六位运算器ALU实验报告
⼗六位运算器ALU实验报告学⽣实验报告实验名称⽤Verilog HDL语句实现16位运算器的功能实验⽇期2013年10⽉19学号2012551212姓名李超班级12计算机科学与技术⼀班⼀、实验⽬的与要求1、了解运算器的组成结构;2、掌握算术逻辑运算器的⼯作原理;3、掌握简单运算器的数据传送通道4、掌握⽤Verilog HDL实现16位简单运算器的设计⼆、实验原理74LS181的逻辑功能表图中,S0到S3是四个控制端,⽤于选择进⾏何种运算。
M ⽤于控制ALU进⾏算术运算还是逻辑运算。
当M=0时,M对进位信号没有任何影响,Fi值与操作数Ai,Bi以及地位向本位进位Cn+1有关,所以M=0时进⾏算术运算。
操作数⽤补码表⽰,“加”只算术加,运算时考虑进位;“+”指逻辑加,不考虑进位;减法运算时,减法取反码运算后⽤加法器实现,结果输出为A减B减1在最末位产⽣⼀个强迫进位(加1),以得到A减B的结果。
当M=1时,封锁了各位的进位输出Cn+i=0,因此各位的运算结果Fi仅与操作数Ai,Bi有关,此时进⾏逻辑运算。
三、实验内容与步骤1.根据书85⾯的逻辑功能表编写Verilog HDL语句,编译,仿真等步骤。
实验代码SN74181:module sn74181(A,B,S,Cn,M,F,C);parameter bit_width=4;output [bit_width-1:0]F;output C;input [bit_width-1:0]A,B,S;input Cn,M;reg C;reg Y=0;reg [bit_width-1:0]F;reg t;initial C=0;always@(S)begincase(S)4'b0000:beginif(M) {t,F}=~{1'b0,A};elsebeginif(Cn) {t,F}={1'b0,A};else {t,F}={1'b0,A}|1;endend4'b0001:beginif(M) {t,F}=~({1'b0,A}|{1'b0,B});endend4'b0010:beginif(M) {t,F}=~{1'b0,A}&{1'b0,B};elsebeginif(Cn) {t,F}={1'b0,A}|({1'b0,~B});else {t,F}=({1'b0,A}|({1'b0,~B}))+1;endend4'b0011:beginif(M) {t,F}=0;elsebeginif(Cn) {t,F}={t,F}-1;else {t,F}=0;endend4'b0100 :beginif(M) {t,F}=~({1'b0,A}&{1'b0,B});elsebeginif(Cn) {t,F}={1'b0,A}+({1'b0,A}&({1'b0,~B}));else {t,F}={1'b0,A}+({1'b0,A}&({1'b0,~B}))+1;endend4'b0101 :beginif(M) {t,F}={1'b0,~B};elsebeginif (Cn) {t,F}=({1'b0,A}&({1'b0,~B}))+({1'b0,A}|{1'b0,B}); else{t,F}=({1'b0,A}&({1'b0,~B}))+({1'b0,A}|{1'b0,B})+1; endend4'b0110 :beginif(M) {t,F}={1'b0,A}^{1'b0,B};elsebeginif(Cn) {t,F}={1'b0,A}-{1'b0,B}-1;else {t,F}={1'b0,A}-{1'b0,B};endend4'b0111 :beginelse {t,F}={1'b0,A}&({1'b0,~B});endend4'b1000 :beginif(M) {t,F}={1'b0,~A}|{1'b0,B};elsebeginif(Cn) {t,F}={1'b0,A}+({1'b0,A}&{1'b0,B});else {t,F}={1'b0,A}+({1'b0,A}&{1'b0,B})+1;end4'b1001 :beginif(M) {t,F}={1'b0,~(A^B)};elsebeginif(Cn) {t,F}={1'b0,A}+{1'b0,B}+1;else {t,F}={1'b0,A}+{1'b0,B};endend4'b1010 :beginif(M) {t,F}={1'b0,B};elsebeginif(Cn){t,F}=({1'b0,A}&{1'b0,B})+({1'b0,A}|({1'b0,~B})); else{t,F}=({1'b0,A}&{1'b0,B})+({1'b0,A}|({1'b0,~B}))+1; end4'b1011 :beginif(M) {t,F}={1'b0,A}&{1'b0,B};elsebeginif(Cn) {t,F}={1'b0,A}&{1'b0,B}-1;else {t,F}={1'b0,A}&{1'b0,B};endend4'b1100 :beginif(M) {t,F}=1;elsebeginif(Cn) {t,F}={1'b0,A}+{1'b0,A};else {t,F}={1'b0,A}+{1'b0,A}+1;endend4'b1101:beginelse {t,F}={1'b0,A}+({1'b0,A}|{1'b0,B})+1; endend4'b1110 :beginif(M) {t,F}={1'b0,A}|{1'b0,B};elsebeginif(Cn) {t,F}={1'b0,A}+({1'b0,A}|({1'b0,~B})); else {t,F}={1'b0,A}+({1'b0,A}|({1'b0,~B}))+1; endend4'b1111 :beginif(M) {t,F}={1'b0,A};elsebeginif(Cn) {t,F}={1'b0,A}-1;else {t,F}={1'b0,A};endendendcaseC=t;endEndmoduleSHIFT:module shift(A,choose,result); parameter bit_width=16;input [bit_width-1:0]A;input[1:0] choose;output [bit_width-1:0] result;reg [bit_width-1:0]result;always@(A or choose)begincase(choose)2'b01:beginresult=A<<1;end2'b10:beginresult={A[0],A[15:1]};end2'b11:beginresult=$signed(A)>>>1;endendcaseendEndmoduleinput [width-1:0] r;input [1:0]x;output [width-1:0] result; output overflow,z,c,p,n;reg [width-1:0] a,b;reg [3:0]s;reg [1:0]sh;reg cn,m,ov;wire co1,co2,co3;wire [width-1:0]co,re1,re2; always@ (x or r)begincase(x)2'b11: begina=r;end2'b10: beginb=r;end2'b00: begins=r[3:0];sh=r[5:4];m=r[8];cn=r[12]; endendcaseendsn74181 u_sn74181_1(.A(a[3:0]),.B(b[3:0]),.S(s),.M(m),.Cn(cn),.C(co1),.F(re1[3:0]));sn74181 u_sn74181_2 (.A(a[7:4]),.B(b[7:4]),.S(s),.M(m),.Cn(co1),.C(co2),.F(re1[7:4]));sn74181 u_sn74181_3 (.A(a[11:8]),.B(b[11:8]),.S(s),.M(m),.Cn(co2),.C(co3),.F(re1[11:8]).B(b[15:12]),.S(s),.M(m),.Cn(co3),.C(overflow),.F(re1[15:12]));shift u_shift(.A(a),.choose(sh),.result(re2[15:0]));assign result=(sh?re2:re1);assign z=~|result;assign n=result[15];Endmodule仿真波形图按照模式⼀电路图结构图设置对应的引脚参数。
16位实验CPU设计实例介绍
16位实验CPU设计实例开放式CPU指的是CPU在一片FPGA芯片中构成,它的指令系统和CPU内部结构可以由使用者根据需要设计,并且能够在TEC-CA上进行调试的CPU。
实验CPU是学生为掌握计算机的工作原理而设计的CPU,主要针对基本原理而不强调完备性。
这样的CPU可以复杂一些,也可以简单一些,视学生水平而定。
本章中介绍的实验CPU实例是针对第6章计算机组成原理实验而设计的,使用者可在此基础上根据自己的需要进行适当增减。
计算机组成原理实验除了进行计算机各部件的实验外,最重要的是使学生掌握计算机整机的工作原理。
我们力求通过这个实验CPU设计实例,使学生能够深入掌握计算机的整机工作原理。
2.1 指令系统设计CPU首先要设计指令系统。
由于实验CPU采用16位字长,指令系统只有15条指令,因此比8位CPU的指令系统设计容易得多。
2.1.1 指令系统ADD DR,SR指令编码:0000 DR SR 0000 0111功能:DR ← DR + SR, 影响C和Z标志。
PC ← PC + 1。
INC DR指令编码:0001 DR SR 0000 0111功能:DR ← DR + 1,影响C和Z标志。
PC ← PC + 1。
SUB DR,SR指令编码:0010 DR SR 0000 0111功能:DR ← DR – SR,影响C和Z标志。
PC ← PC + 1。
DEC DR指令编码:0011 DR SR 0000 0111功能:DR ← DR – 1,影响C和Z标志。
PC ← PC + 1。
AND DR,SR指令编码:0100 DR SR 0000 0011功能:DR ← DR and SR,影响Z标志。
PC ← PC + 1。
OR DR,SR指令编码:0101 DR SR 0000 0011功能:DR ← DR or SR,影响Z标志。
PC ← PC + 1。
NOT DR指令编码:0110 DR SR 0000 0011功能:DR ← not DR,影响Z标志。
74181 ALU的设计及16位加法功能验证
74181 ALU的设计及16位加法功能验证This is a controlled document.Printed copies must have the revision number verified prior to each use.修改记录分工情况目录修改记录................................................................................................... 错误!未定义书签。
分工情况................................................................................................... 错误!未定义书签。
目录................................................................................................... 错误!未定义书签。
1.0B关于本文 ......................................................................................... 错误!未定义书签。
1.1 4B目的............................................................................................ 错误!未定义书签。
1.2 5B术语列表........................................................................................ 错误!未定义书签。
1.3 6B相关文档........................................................................................ 错误!未定义书签。
16位逻辑框图课程设计
16位逻辑框图课程设计一、课程目标知识目标:1. 让学生掌握16位逻辑框图的基本概念,理解其组成元素及功能。
2. 使学生能够识别并描述常见16位逻辑框图的连接方式和信号流向。
3. 帮助学生掌握16位逻辑框图的绘制方法,学会使用相关软件工具进行框图设计。
技能目标:1. 培养学生运用16位逻辑框图分析电子电路的能力,能根据实际需求设计简单电路。
2. 提高学生团队协作能力,学会在小组讨论中分享观点,共同解决问题。
3. 培养学生运用所学知识解决实际问题的能力,将理论应用于实践。
情感态度价值观目标:1. 激发学生对电子电路的兴趣,培养其探索精神和创新意识。
2. 培养学生严谨、认真的学习态度,养成良好学习习惯。
3. 引导学生关注电子技术在日常生活中的应用,认识到科技对生活的改变,提高社会责任感。
本课程针对高中年级学生,结合学科特点和教学要求,注重理论知识与实践操作的相结合,旨在提高学生的电子电路设计与分析能力。
课程目标具体、可衡量,以便学生和教师在教学过程中能够明确课程预期成果,并为后续的教学设计和评估提供依据。
二、教学内容1. 16位逻辑框图基本概念:逻辑门电路、组合逻辑电路、时序逻辑电路、触发器等。
2. 16位逻辑框图组成元素:逻辑门、触发器、寄存器、计数器、编码器、译码器等。
3. 16位逻辑框图连接方式:串联、并联、反馈等。
4. 16位逻辑框图信号流向:输入信号、输出信号、控制信号等。
5. 16位逻辑框图绘制方法:使用软件工具(如Visio、Multisim等)绘制逻辑框图。
6. 16位逻辑框图设计实例:分析并设计简单的电子电路,如加法器、编码器、译码器等。
教学内容按照以下进度安排:第一课时:16位逻辑框图基本概念及组成元素。
第二课时:16位逻辑框图连接方式和信号流向。
第三课时:16位逻辑框图绘制方法及软件工具使用。
第四课时:16位逻辑框图设计实例分析与实践。
教学内容与教材章节关联如下:第一章:逻辑门电路及组合逻辑电路。
(完整word版)16位算术逻辑运算实验_共5页
16 位算术逻辑运算实验一、实验内容1、实验原理实验中所用16位运算器数据通路如图3-3所示。
其中运算器由四片74LS181以并/串形成16位字长的ALU构成。
低8位运算器的输出经过一个三态门74LS245(U33)到ALUO1插座,实验时用8芯排线和内部数据总线BUSD0~D7插座BUS1~6中的任一个相连,低8位数据总线通过LZD0~LZD7显示灯显示;高8位运算器的输出经过一个三态门74LS245(U33`)到ALUO1`插座,实验时用8芯排线和高8位数据总线BUSD8~D15插座KBUS1或KBUS2相连,高8位数据总线通过LZD8~LZD15显示灯显示;参与运算的四个数据输入端分别由四个锁存器74LS273(U29、U30、U29`、U30、)锁存,实验时四个锁存器的输入并联后用8芯排线连至外部数据总线EXD0~D7插座EXJ1~EXJ3中的任一个;参与运算的数据源来自于8位数据开并KD0~KD7,并经过一三态门74LS245(U51)直接连至外部数据总线EXD0~EXD7,输入的数据通过LD0~LD7显示。
2、实验接线本实验用到6个主要模块:⑴低8位运算器模块,⑵数据输入并显示模块,⑶数据总线显示模块,⑷功能开关模块(借用微地址输入模块),⑸高8位运算器模块,⑹高8位(扩展)数据总线显示模块。
根据实验原理详细接线如下(接线⑴~⑸同实验一):⑴ALUBUS连EXJ3;⑵ALUO1连BUS1;⑶SJ2连UJ2;⑷跳线器J23上T4连SD;⑸LDDR1、LDDR2、ALUB、SWB四个跳线器拨在左边(手动方式);⑹AR跳线器拨在左边,同时开关AR拨在"1"电平;⑺ALUBUS`连EXJ2;⑻ALUO1`连KBUS1;⑼跳线器J19、J25拨左边(16位ALU状态);⑽高8位运算器区跳线器ZI2、CN0、CN4连上短路套;二、实验目的1、掌握16位算术逻辑运算数据传送通路组成原理2、进一步验证算术逻辑运算能力发生器74LS181的组合功能三、实验步骤⑴连接线路,仔细查线无误后,接通电源。
基于CPLD的16位算术逻辑运算单元的设计
基于CPLD的16位算术逻辑运算单元的设计(EPM7128扩充选配类)一、实验目的1、掌握运算器的数据传输方式。
2、掌握74LS181的功能和应用。
3、学习并掌握利用CPLD器件通过原理图进行算术逻辑单元的设计。
二、实验要求1、完成16位不带进位位算术、逻辑运算实验。
按照实验步骤完成实验项目,了解算术逻辑运算单元的运行过程。
2、通过原理图配置EPM7128的内部电路结构,使其替代分离的算术逻辑运算单元的设计。
三、实验说明1、ALU单元实验构成(1)运算器由4片74LS181构成16位字长的ALU单元。
(2)4片74LS374作为2个数据锁存器(DR1、DR2),4片74LS244作为2个数据驱动器(DR1、DR2),两个8芯插座作为数据输入端,可通过长8芯扁平电缆,把数据输入端连接到二进制开关上。
运算器的数据输出由两片74LS244(输出缓冲器)来控制,两个8芯插座作为数据输出端,由开关控制显示16位输出结果。
可通过8芯扁平电缆线把数据输出端连接到微指令LED灯上。
图2-1-22、ALU单元的工作原理(如图2-1-2)数据输入锁存器DR1的EDR1为低电平,并且CLK有上升沿时,把来自数据总线的数据打入锁存器DR1。
同样使EDR2为低电平、CLK有上升沿时把数据总线上的数据打入数据锁存器DR2。
算术逻辑运算单元的核心是由4片74LS181组成,它可以进行2个16位二进制数的算术逻辑运算,74LS181的各种工作方式可通过设置其控制信号来实现(S0、S1、S2、S3、M、CN)。
当实验者正确设置了74LS181的各个控制信号,74LS181会运算数据锁存器DR1、DR2内的数据。
由于DR1、DR2已经把数据锁存,只要74LS181的控制信号不变,那么74LS181的输出数据也不会发生改变。
输出缓冲器采用两片74LS244,当控制信号ALU-O为低电平时,两片74LS244导通,把74LS181的运算低位结果输出到数据总线,并在微指令单元LED上显示。
16位布斯算法乘法器和ALU
16位布斯算法乘法器和ALUBooth算法16位乘法器西安电子科技大学大三集成电路设计与集成系统专业尹俊镖一乘法器原理分析16位有符号乘法器可以分为三个部分:根据输入的被乘数和乘数产生部分积、部分积压缩产生和和进位、将产生的和和进位相加。
这三个部分分别对应着编码方式、拓扑结构以及加法器。
被乘数X(16-bit)符号位扩展S01?X(17-bit)X(17-比特)01?X2?XMUXADD/SUBBooth译码&ALU(17-bit)控制逻辑符号位扩展S乘积(低16-bit)乘数乘积(高16-bit)保留移出位右移2-bit1 编码方式:本设计采用booth2编码。
部分积是负数时S=1,部分积是正数时S=0;当部分积是+0时,E=1,部分积是-0时,E=0,其余情况E=S取反。
2 拓扑结构:本设计采用二进制树的拓扑结构。
二进制树拓扑结构排列的较为规整,且部分积压缩的速度也非常快。
部分积压缩的目的是为了减小进位传播的延时,采用进位保留加法器,根据当前位信息产生下一位的进位,仅仅产生而没有进位行波传播,这样就可以把当前的多位压缩到较少的位数。
经过几次压后,把部分积压缩成和以及进位。
部分积主要是通过counter和compressor进行压缩,通常使用(3:2)counter 和(4:2)compressor。
(3:2)counter其实质就是一个全加器,进位输入为ci,进位输出为c;(4:2)compressor可以由两个全加器组成,ci为进位输入,Coin为内部进位,输入到下一位的进位输入Ci,Coex为输出进位。
上图为二进制树的拓扑结构图,每4个部分积输入到一个(4:2)compressor 中,产生两个输出,则8个部分积使用3次(4:2)compressor就可以得到和和进位。
部分积的压缩方式可以见下图。
如图中所示,加上最后一个部分积的进位,共有9个部分积,本设计把最后的进位位移到第一个部分积上,使用5个全加器,把进位融合到第一个部分积,这样就转变成8个部分积了,再使用两级二进制树压缩,所以总共使用了三级压缩,最终得到部分积的和和进位。
16位乘法器
乘法器是众多数字系统中的基本模块。
从原理上说它属于组合逻辑范畴;但从工程实际设计上来说,它往往会利用时序逻辑设计的方法来实现,属于时序逻辑范畴。
通过这个实验使大家能够掌握利用FPGA/CPLD设计乘法器的思想,并且能够将我们设计的乘法器应用到实际工程中。
下面我们分别列举了十进制乘法运算和二进制乘法运算的例子。
下面这种计算乘法的方式是大家非常熟悉的:乘积项与乘数相应位对齐(即将乘积项左移),加法运算的数据宽度与被乘数的数据位宽相同。
下面例子中的被乘数和乘数都是无符号的整数,对于有符号数的乘法,可以将符号与数据绝对值分开处理,即绝对值相乘,符号异或。
乘法器的设计方法有两种:组合逻辑设计方法和时序逻辑设计方法。
采用组合逻辑设计方法,电路事先将所有的乘积项全部计算出来,最后加法运算。
采用时序逻辑设计方法,电路将部分已经得到的乘积结果右移,然后与乘积项相加并保存和值,反复迭代上述步骤直到计算出最终乘积。
在本次实验中我们就利用时序逻辑设计方法来设计一个16位乘法器,既然是利用时序逻辑设计方法那么我们就得利用时钟信号控制乘法器运算,那么这样用时序逻辑设计方法与用组合逻辑设计方法比较,它有什么好处呢?利用时序逻辑设计方法可以使整体设计具备流水线结构的特征,能适用在实际工程设计中。
IO口定义:clk:芯片的时钟信号。
rst_n:低电平复位、清零信号。
定义为0表示芯片复位;定义为1表示复位信号无效。
start: 芯片使能信号。
定义为0表示信号无效;定义为1表示芯片读入输入管脚得乘数和被乘数,并将乘积复位清零。
ain:输入a(被乘数),其数据位宽为16bit.bin:输入b(乘数),其数据位宽为16bit.yout:乘积输出,其数据位宽为32bit.done:芯片输出标志信号。
定义为1表示乘法运算完成,yout端口的数据稳定,得到最终的乘积;定义为0表示乘法运算未完成,yout端口的数据不稳定。
数据吞吐量的计算:数据吞吐量使指芯片在一定时钟频率条件下所能处理的有效数据量。
16位超前进位加法器实验报告
实验名称:十六位超前进位加法器一、实验目的设计、验证并优化16位超前进位加法器的逻辑功能。
二、实验原理1、1位全加器原理全加器的求和输出信号和进位信号,定义为输入变量A、B、C的两种组合布尔函数:求和输出信号= A ⊕B ⊕C进位信号= AB + AC + BC实现这两个函数的门级电路如下图。
并不是单独实现这两个函数,而是用进位信号来产生求和输出信号。
这样可以减少电路的复杂度,因此节省了芯片面积。
上述全加器电路可以用作一般的n位二进制加法器的基本组合模块,它允许两个n 位的二进制数作为输入,在输出端产生二进制和。
最简单的n位加法器可由全加器串联构成,这里每级加法器实现两位加法运算,产生相应求和位,再将进位输出传到下一级。
这样串联的加法器结构称为并行加法器,但其整体速度明显受限于进位链中进位信号的延迟。
因此,为了能够减少从最低有效位到最高有效位的最坏情况进位传播延时,最终选择的电路是十六位超前加法器。
2、超前进位加法器原理超前进位加法器的结构如下图。
超前进位加法器的每一位由一个改进型全加器产生一个进位信号gi和一个进位传播信号pi,其中全加器的输入为Ai和Bi,产生的等式为:改进的全加器的进位输出可由一个进位信号和一个进位传输信号计算得出,因此进位信号可改写为:式中可以看出,当gi = 1(Ai = Bi = 1)时,产生进位;当pi = 1(Ai =1或Bi = 1)时,传输进位输入,这两种情况都使得进位输出是1。
近似可以得到i+2和i+3级的进位输出如下:下图为一个四位超前进位加法器的结构图。
信号经过pi和gi产生一级时延,经过计算C产生一级时延,则A,B输入一旦产生,首先经过两级时延算出第1轮进位值C’不过这个值是不正确的。
C’再次送入加法器,进行第2轮2级时延的计算,算出第2轮进位值C,这一次是正确的进位值。
这里的4个4位超前进位加法器仍是串行的,所以一次计算经过4级加法器,一级加法器有2级时延,因此1次计算一共经过8级时延,相比串行加法器里的16级时延,速度提高很多。
实验一运算器部件实验1
实验一运算器部件实验一.实验类型设计型实验二.实验目的1.掌握4 位算术逻辑单元74181,先行进位发生器74182的工作原理和使用方法。
2.掌握16 位串/并运算器的工作原理及设计方法。
三、实验要求1.用四片4 位并行算术逻辑运算单元74181、一片先行进位发生电路74182,组装一个组间进位并行/串行可变的16 位运算器(每组四位)。
2.验证集成电路74181、74182 的功能。
3.分别测试16 位运算器组间串行进位和并行进位情况下的最大进位延迟时间。
四、实验芯片介绍1.74181芯片2.74182芯片四、实验原理1.实现CLA电路的芯片设计CLA电路的主要功能是接收BCLA加法器的Gi和Pi以及初始进位信号Cin,从而同时产生各BCLA加法器的低位进位信号(C4、C8、C12)。
假设4片BCLA加法器的先行进为输出依次是P1G1、P2G2、P3G3、P4G4,那么:Cn+x=G1+P1Cin,Cn+y=G2+P2Cn+x=G2+G1P2+P1P2Cin,Cn+z=G3+P3Cn+y=G3+G2P3+G1P2P3+P1P2P3Cin,Cn+4=G4+P4Cn+z=G4+G3P4+G2P3P4+G1P2P3P4+P1P2P3P4Cin.现令P*=P1P2P3P4,G*=G4+G3P4+G2P3P4+G1P2P3P4,则Cn+4=G*+P*Cin.根据上述一系列进位产生公式,可以在Multisim 2001利用TTL工具箱中74系列提供的工具创建CLA电路,实现图如图2所示。
图2 先行进位逻辑电路仿真图其中,具有两个输入端的与门、或非门都是TTL工具箱中74系列提供的工具, 而具有3个输入端和4个输入端的与门、或非门的实现方法有多种,可由学生发挥自身创造力,自己提出解决方案。
此处是使用Multisim 2001中对已有元器件的编辑功能实现的,从双输入的与门和或非门编辑改造而来。
要对上述CLA电路进行封装,以便其可以作为一个芯片模块使用。
实验三16位算术逻辑运算实验
实验三16位算术逻辑运算实验实验三16位算术逻辑运算实验⼀、实验⽬的1、掌握16位算术逻辑运算数据传送通路组成原理。
2、进⼀步验证算术逻辑运算功能发⽣器74L S181的组合功能。
⼆、实验内容1、实验原理实验中所⽤16位运算器数据通路如图3-3所⽰。
其中运算器由四⽚74L S181以并/串形成16位字长的A L U构成。
低8位运算器的输出经过⼀个三态门74L S245(U33)到内部总线,低8位数据总线通过L Z D0~L Z D7显⽰灯显⽰;⾼8位运算器的输出经过⼀个三态门74L S245(U33`)到A L U O1`插座,实验时⽤8芯排线和⾼8位数据总线B U S D8~D15插座K B U S1或K B U S2相连,⾼8位数据总线通过L Z D8~L Z D15显⽰灯显⽰;参与运算的四个数据输⼊端分别由四个锁存器74L S273(U29、U30、U29`、U30、)锁存,实验时四个锁存器的输⼊并联连⾄内部数据总线再⽤8芯线连接到外部数据总线E X D0~D7插座E X J1~E X J3中的任⼀个;参与运算的数据源来⾃于8位数据开并K D0~K D7,并经过⼀三态门74L S245(U51)直接连⾄外部数据总线E X D0~E X D7,输⼊的数据通过L D0~L D7显⽰。
2、实验接线本实验⽤到6个主要模块:⑴低8位运算器模块,⑵数据输⼊并显⽰模块,⑶数据总线显⽰模块,⑷功能开关模块(借⽤微地址输⼊模块),⑸⾼8位运算器模块,⑹⾼8位(扩展)数据总线显⽰模块。
根据实验原理详细接线如下:1、J20,J21,J22,接上短路⽚,图3-1.J20,J21,J22接上短路⽚2、J24,J25,J26接左边;图3-2.J24,J25,J26接左边3、J27,J28 左边图3-3.J27,J28接左边4、J23 置右边T4选“SD”图3-4.J23接右边5、JA5 置“接通”;图3-5.JA5置上⽅“接通”6、JA6 置“⼿动”;图3-6.JA6置下边“⼿动”7、JA3 置“接通”;图3-7.JA3置右边“接通”8、JA1,JA2,JA4置“⾼阻”;图3-8.JA1、JA2接下边“⾼阻”图3-9.JA4置左边“⾼阻”9、JA8 置上⾯“微地址”图3-10.JA8置上⾯“微地址”10、EXJ1接BUS3图3-11.EXJ1接BUS3 11、ALO1'接KBUS1图3-12.ALO1接KBUS1 12、开关CE 、AR 置1图3-13.CE与AR各⾃置113、ZI2,CN4,CN0接上短路⽚图3-14.Z12,CN4和CN0都接上短路⽚3、实验步骤⑴连接线路,仔细查线⽆误后,接通电源。
16ALU课程设计
16ALU课程设计一、课程目标知识目标:1. 学生能理解16位算术逻辑单元(ALU)的基本概念和原理;2. 学生能掌握16位ALU的运算过程和操作方法;3. 学生了解16位ALU在不同计算机系统中的应用和作用。
技能目标:1. 学生能运用所学知识,设计简单的16位ALU运算电路;2. 学生能通过编程实现16位ALU的基本运算功能;3. 学生具备分析和解决16位ALU相关实际问题的能力。
情感态度价值观目标:1. 学生培养对计算机硬件及组成原理的兴趣,提高学习积极性;2. 学生养成团队合作意识,学会与他人共同分析和解决问题;3. 学生认识到科技发展对国家和社会的重要性,增强科技创新意识。
课程性质:本课程为计算机组成原理的一部分,以理论教学和实践操作相结合的方式进行。
学生特点:学生具备一定的数字电路基础知识,对计算机硬件有一定了解,但可能对16位ALU的内部结构和运算过程较为陌生。
教学要求:教师需注重理论与实践相结合,通过实例分析、动手实践等教学方法,引导学生掌握16位ALU的相关知识和技能。
在教学过程中,关注学生个体差异,鼓励学生主动参与、积极思考,培养其创新意识和团队合作精神。
通过本课程的学习,使学生能够达到上述课程目标,为后续相关课程的学习打下坚实基础。
二、教学内容1. 理论知识:- 算术逻辑单元(ALU)的定义、功能及分类;- 16位ALU的内部结构和工作原理;- 16位ALU的运算过程及操作方法;- 16位ALU在不同计算机系统中的应用。
2. 实践操作:- 设计简单的16位ALU运算电路;- 编程实现16位ALU的基本运算功能;- 分析和解决16位ALU相关实际问题的案例。
教学大纲安排:第1课时:算术逻辑单元(ALU)的定义、功能及分类,16位ALU的内部结构和工作原理;第2课时:16位ALU的运算过程及操作方法;第3课时:16位ALU在不同计算机系统中的应用;第4课时:设计简单的16位ALU运算电路;第5课时:编程实现16位ALU的基本运算功能;第6课时:分析和解决16位ALU相关实际问题的案例。
算术逻辑运算实验报告
置入暂存器B中,暂存器B的值通过ALU单元的B7…B0八位LED灯显示。
(6) 改变运算器的功能设置,观察运算器的输出。
置ALU_B=0、LDA=0、LDB=0,然后按表1-1-1置S3、S2、S1、S0和Cn的数值,并观察数据总线LED显示灯显示的结果。
如置S3、S2、S1、S0为0010,运算器作逻辑与运算,置S3、S2、S1、S0为1001,运算器作加法运算。
如果实验箱和PC联机操作,则可通过软件中的数据通路图来观测实验结果(软件使用说明请看附录一),方法是:打开软件,选择联机软件的“【实验】—【运算器实验】”,打开运算器实验的数据通路图,如图1-1-6所示。
进行上面的手动操作,每按动一次ST按钮,数据通路图会有数据的流动,反映当前运算器所做的操作,或在软件中选择“【调试】—【单节拍】”,其作用相当于将时序单元的状态开关KK2置为‘单拍’档后按动了一次ST按钮,数据通路图也会反映当前运算器所做的操作。
重复上述操作,并完成表1-1-2。
然后改变A、B的值,验证FC、FZ的锁存功能。
图1-1-6 数据通路图
五、实验结果及分析
在CON单元的SD27…SD20数据开关中输入01100101,置LDA=1,LDB=0,连续按动时序单元的ST按钮,将二进制数01100101置入暂存器A中。
在CON单元的SD27…SD20数据开关中输入10100111,置LDA=0,LDB=1,连续按动时序单元的ST按钮,将二进制数10100111置入暂存器B中。
置ALU_B=0、LDA=0、LDB=0,置S3、S2、S1、S0为0010,运算器作逻辑与运算。
16位超前进位加法器实验报告
实验名称:十六位超前进位加法器一、实验目的设计、验证并优化16位超前进位加法器的逻辑功能。
二、实验原理1、1位全加器原理全加器的求和输出信号和进位信号,定义为输入变量A、B、C的两种组合布尔函数:求和输出信号 = A ⊕ B ⊕ C进位信号 = AB + AC + BC实现这两个函数的门级电路如下图。
并不是单独实现这两个函数,而是用进位信号来产生求和输出信号。
这样可以减少电路的复杂度,因此节省了芯片面积。
上述全加器电路可以用作一般的n位二进制加法器的基本组合模块,它允许两个n 位的二进制数作为输入,在输出端产生二进制和。
最简单的n位加法器可由全加器串联构成,这里每级加法器实现两位加法运算,产生相应求和位,再将进位输出传到下一级。
这样串联的加法器结构称为并行加法器,但其整体速度明显受限于进位链中进位信号的延迟。
因此,为了能够减少从最低有效位到最高有效位的最坏情况进位传播延时,最终选择的电路是十六位超前加法器。
2、超前进位加法器原理超前进位加法器的结构如下图。
超前进位加法器的每一位由一个改进型全加器产生一个进位信号gi和一个进位传播信号pi,其中全加器的输入为Ai和Bi,产生的等式为:改进的全加器的进位输出可由一个进位信号和一个进位传输信号计算得出,因此进位信号可改写为:式中可以看出,当gi = 1(Ai = Bi = 1)时,产生进位;当pi = 1(Ai =1或Bi = 1)时,传输进位输入,这两种情况都使得进位输出是1。
近似可以得到i+2和i+3级的进位输出如下:下图为一个四位超前进位加法器的结构图。
信号经过pi和gi产生一级时延,经过计算C产生一级时延,则A,B输入一旦产生,首先经过两级时延算出第1轮进位值C’不过这个值是不正确的。
C’再次送入加法器,进行第2轮2级时延的计算,算出第2轮进位值C,这一次是正确的进位值。
这里的4个4位超前进位加法器仍是串行的,所以一次计算经过4级加法器,一级加法器有2级时延,因此1次计算一共经过8级时延,相比串行加法器里的16级时延,速度提高很多。
16位乘法器
乘法器是众多数字系统中的基本模块。
从原理上说它属于组合逻辑范畴;但从工程实际设计上来说,它往往会利用时序逻辑设计的方法来实现,属于时序逻辑范畴。
通过这个实验使大家能够掌握利用FPGA/CPLD设计乘法器的思想,并且能够将我们设计的乘法器应用到实际工程中。
下面我们分别列举了十进制乘法运算和二进制乘法运算的例子。
下面这种计算乘法的方式是大家非常熟悉的:乘积项与乘数相应位对齐(即将乘积项左移),加法运算的数据宽度与被乘数的数据位宽相同。
下面例子中的被乘数和乘数都是无符号的整数,对于有符号数的乘法,可以将符号与数据绝对值分开处理,即绝对值相乘,符号异或。
乘法器的设计方法有两种:组合逻辑设计方法和时序逻辑设计方法。
采用组合逻辑设计方法,电路事先将所有的乘积项全部计算出来,最后加法运算。
采用时序逻辑设计方法,电路将部分已经得到的乘积结果右移,然后与乘积项相加并保存和值,反复迭代上述步骤直到计算出最终乘积。
在本次实验中我们就利用时序逻辑设计方法来设计一个16位乘法器,既然是利用时序逻辑设计方法那么我们就得利用时钟信号控制乘法器运算,那么这样用时序逻辑设计方法与用组合逻辑设计方法比较,它有什么好处呢?利用时序逻辑设计方法可以使整体设计具备流水线结构的特征,能适用在实际工程设计中。
IO口定义:clk:芯片的时钟信号。
rst_n:低电平复位、清零信号。
定义为0表示芯片复位;定义为1表示复位信号无效。
start: 芯片使能信号。
定义为0表示信号无效;定义为1表示芯片读入输入管脚得乘数和被乘数,并将乘积复位清零。
ain:输入a(被乘数),其数据位宽为16bit.bin:输入b(乘数),其数据位宽为16bit.yout:乘积输出,其数据位宽为32bit.done:芯片输出标志信号。
定义为1表示乘法运算完成,yout端口的数据稳定,得到最终的乘积;定义为0表示乘法运算未完成,yout端口的数据不稳定。
数据吞吐量的计算:数据吞吐量使指芯片在一定时钟频率条件下所能处理的有效数据量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
16 位算术逻辑运算实验
一、实验内容
1、实验原理
实验中所用16位运算器数据通路如图3-3所示。
其中运算器由四片74LS181以并/串形成16位字长的ALU构成。
低8位运算器的输出经过一个三态门74LS245(U33)到ALUO1插座,实验时用8芯排线和内部数据总线BUSD0~D7插座BUS1~6中的任一个相连,低8位数据总线通过LZD0~LZD7显示灯显示;高8位运算器的输出经过一个三态门74LS245(U33`)到ALUO1`插座,实验时用8芯排线和高8位数据总线BUSD8~D15插座KBUS1或KBUS2相连,高8位数据总线通过LZD8~LZD15显示灯显示;参与运算的四个数据输入端分别由四个锁存器74LS273(U29、U30、U29`、U30、)锁存,实验时四个锁存器的输入并联后用8芯排线连至外部数据总线EXD0~D7插座EXJ1~EXJ3中的任一个;参与运算的数据源来自于8位数据开并KD0~KD7,并经过一三态门74LS245(U51)直接连至外部数据总线EXD0~EXD7,输入的数据通过LD0~LD7显示。
本实验用到6个主要模块:⑴低8位运算器模块,⑵数据输入并显示模块,⑶数据总线显示模块,⑷功能开关模块(借用微地址输入模块),⑸高8位运算器模块,⑹高8位(扩展)数据总线显示模块。
根据实验原理详细接线如下(接线⑴~⑸同实验一):
⑴ALUBUS连EXJ3;
⑵ALUO1连BUS1;
⑶SJ2连UJ2;
⑷跳线器J23上T4连SD;
⑸LDDR1、LDDR2、ALUB、SWB四个跳线器拨在左边(手动方式);
⑹AR跳线器拨在左边,同时开关AR拨在"1"电平;
⑺ALUBUS`连EXJ2;
⑻ALUO1`连KBUS1;
⑼跳线器J19、J25拨左边(16位ALU状态);
⑽高8位运算器区跳线器ZI2、CN0、CN4连上短路套;
二、实验目的
1、掌握16位算术逻辑运算数据传送通路组成原理
2、进一步验证算术逻辑运算能力发生器74LS181的组合功能
三、实验步骤
⑴连接线路,仔细查线无误后,接通电源。
⑵用二进制数码开关KD0~KD7向DR1、DR2、DR3、DR4寄存器置数。
方法:关闭ALU输出三态门应使ALUB`=1(即开关ALUB=1),开启输入三态门应使SWB`=0(即开关SWB=0),选通哪一个寄存器用对应开关LDDR1~LDDR4(高电平有效),其中LDDR3、LDDR4开关在高8位运算器上部,输入脉冲T4按手动脉冲发生按钮。
设置数据开关具体操作步骤图示如下:
说明:LDDR1、LDDR2、ALUB`、SWB`、LDDR3、LDDR4六个信号电平由对应的开关LDDR1、LDDR2、ALUB、SWB、LDDR3、LDDR4给出,拨在上面为"1",拨在下面为"0",电平值由对应显示灯显示;T4由手动脉冲开关给出。
⑶进一步验证74LS181的算术运算和逻辑运算功能(采用正逻辑)。
〃开关ALUB=0,关闭输入三态门;
〃开关SWB=1,打开输出三态门;
〃LDDR1~LDDR4四个开关全拨在"0"电平。
〃根据下表3-2,置功能开关S3、S2、S1、S0、M、CN,以验证74LS181的算术运算和逻辑运算功能。
说明:如果要实现16位带进位控制算术逻辑运算,只需在实验三的基础上将开关AR=1变成AR=0即可。
注意:本实验做完后,拔掉连线ALUBUS`和ALUO1`,去掉短路套ZI2、CN0、CN4。
四、实验过程
1. 实验过程中遇到的问题及解决办法(200字以上)
2.实验过程收获(需结合理论学习与实验操作学习进行说明, 200字以上)
五、实验结果
验证成功。