计组课设alu设计和4位锁存器设计

计组课设alu设计和4位锁存器设计
计组课设alu设计和4位锁存器设计

计算机与通信工程学院

计算机组成原理课程设计

专业名称计算机科学与技术

班级学号

学生姓名

指导教师

设计时间2017.12.23~2018.1.3

课程设计任务书

专业:计算机科学与技术学号:学生姓名(签名):设计题目:

一、设计实验条件

综合楼1207实验室

硬件:PC机

软件:Xilinx ISE ModelSim

编程语言:VHDL

二、设计任务及要求

设计任务:

1.7、16、29、42号指令的设计;

2.模型机的ALU;

3.4位锁存器;

要求:

●总线结构:单总线,数据总线位数8位、地址总线8 位;

●存储器:内存容量64K*8bit

●控制器:用硬联线控制器实现26位微操作控制信号

●运算器:单累加器,实现加、减等8种操作

●外设:

?输入:用开关输入二进制量

?输出:7段数码管和LED显示

●指令系统规模:64条指令,7种类型,5种寻址方式

三、设计报告的内容

1.设计题目与设计任务(设计任务书)

题目:8位模型机设计-指令系统及ALU设计

设计内容如下:

1、指令系统设计:

2、模型机硬件设计

题目:模型机ALU设计(8功能ALU设计)。

功能:实现减法、减法、与、或、进位加法、进位减法、取反、输出。

3、逻辑电路设计

题目:4位锁存器设计

功能:只要时钟信号为逻辑“1”,锁存器就让输入数据传送至器输出端。

但是,在时钟信号为低电平的整个期间,其输出时钟保持不变。

2.前言(绪论)(设计的目的、意义等)

融会贯通计算机组成原理课程的内容,通过知识的综合运用,加深对计算机系统各个模块的工作原理及互相联系的认识;

学习运用VHDL进行FPGA/CPLD设计的基本步骤和方法,熟悉EDA的设计、模拟调试工具的使用,体会FPGA/CPLD技术相对于传统开发技术的优点;

培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验

3.设计主体(各部分设计内容、分析、结论等)

【系统设计】

1.模型机逻辑框图

图1 整机逻辑结构框图

图2 芯片引脚

图3 CPU逻辑结构框图2.指令系统设计

4、指令执行流程

5.指令流程图

图4 指令执行流程图

6、组合逻辑控制器设计:假设该模型机采用组合逻辑控制器,根据指令执行流程,划分机器周期及节拍,安排操作时序表,写出每个控制信号的逻辑表达式

ALL代表所有指令,A代表ADD指令,S代表SUB指令,M代表MOVI指令,J代表JZ指令。

控制信号的逻辑表达式:

EMRD=M0·T1+J·M1·T3+(S+A) ·M1·T4+A·M2·T6

PCOE=M0·T0+(A+S+J) ·M1·T3

EMEN=M0·T2+J·M1·T3+(A+S) ·M1·T4+A·M2·T6

IREN=M0·T2

ELP=J·(Z=1) ·M1·T4

MAREN=M0·T0+(A+S+J) ·M1·T3+A·M1·T5

RRD=M·M1·T3

WEN=M0·T1+(M+J) ·M1·T3+(A+S) ·M2·T4+A·M2·T6

AEN=M·M1·T4+S·M1·T5+A·M2·T7

S(+)=S·M1·T5+A·M2·T7

X(+)=A·M2·T7

7、微程序控制器设计:假设该模型机采用微程序控制器,根据指令执行流程,安排微指令格式,为每条微指令安排微地址及下址,设计微地址修改逻辑。假设微指令采用水平格式,操作控制字段采用直接表示法,后继微地址采用断点方式获得,采用T1、T2两级时序系统,T1取微指令,T2执行微指令并在此周期修改微地址形成后继微地址。

转移控制字段用两位表示:

P1 P0 = 000 (P=0):顺序执行,下址字段送UAR

P1 P0 = 001 (P=1):由IR11 IR10修改UAR4 UAR3

因此地址转移逻辑表达式为

UAR4 = R11·(P=1)·T2

UAR3 = R10·(P=1)·T2

断定方式下的微程序与微地址安排如图:

00011

00100

00111

模型机的伪指令及其编号: 操作控制字段直接表示法的微程序:

【系统实现】 1、模型机实现

(1)逻辑电路的图形符号表示、功能

图5 ALU图形符号表示、功能

功能描述:通过三位二进制控制量S2~S0数值的变化来实现八种功能操作:加、减、带进位的加、带进位的减、与、或、取反、输出。

表6 ALU输入端代表的功能

(2)系统实现

library IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

entity alu is

PORT (

A : in STD_LOGIC_VECTOR(15 DOWNTO 0);

W : in STD_LOGIC_VECTOR (15 DOWNTO 0);

S0 : in STD_LOGIC;

S1 : in STD_LOGIC;

S2 : in STD_LOGIC;

D : out STD_LOGIC_VECTOR (15 DOWNTO 0);

CIN : in STD_LOGIC;

COUT : out STD_LOGIC

);

end alu;

architecture Behavioral of alu is

SIGNAL T:STD_LOGIC_VECTOR(16 DOWNTO 0);

BEGIN

T<= ('0' & A)+('0' & W) WHEN S2='0' AND S1='0' AND S0='0' ELSE

('0' & A)-('0' & W) WHEN S2='0' AND S1='0' AND S0='1' ELSE

('0' & A)OR('0' & W) WHEN S2='0' AND S1='1' AND S0='0' ELSE

('0' & A)AND('0' & W) WHEN S2='0' AND S1='1' AND S0='1' ELSE

('0' & A)+('0' & W)+CIN WHEN S2='1' AND S1='0' AND S0='0' ELSE

('0' & A)-('0' & W)-CIN WHEN S2='1' AND S1='0' AND S0='1' ELSE –SUBC A,EM

NOT('0' & A) WHEN S2='1' AND S1='1' AND S0='0' ELSE ('0' & A);

D <= T(15 DOWNTO 0);

COUT<= T(16);

end Behavioral;

2.图6 RTL级电路

(3)功能仿真

图7 ALU功能仿真

通过仿真证实:上述程序能够实现八种功能的ALU的设计。通过对输入量S0~S2变化来实现八种功能并通过cin来控制加减进位的问题。并比较随机抽选的数据和根据电平推测出的结果相同,证明时序图能反映出各种功能之间通过S0~S1完成转换。

上图S0、S1、S2分别为000,查表可知为ALU的加法功能,所以T A+W。由上图可知运算结果是正确的。

2、逻辑电路设计

(1)逻辑电路的图形符号表示、功能

图8 4位锁存器的图形符号表示、功能

功能描述:只要时钟信号为逻辑“1”,锁存器就让输入数据传送至器输出

端。但是,在时钟信号为低电平的整个期间,其输出时钟保持不变。

(2)系统实现

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

entity foursuocun1 is

PORT (

LK : IN STD_LOGIC;

DIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)

);

end foursuocun1;

architecture Behavior of foursuocun1 is

BEGIN

PROCESS(LK, DIN)

BEGIN

IF LK'EVENT AND LK = '1' THEN

DOUT <= DIN;

END IF;

END PROCESS;

END behavior;

图8 RTL级电路

图9 Technology级电路

(3)功能仿真

仿真证实:上述程序实现了4位锁存器电路:LK控制高阻态,DIN控制输入,DOUT 控制输出。查看图中电平的状态和输出的结果与根据电平状态推出的结果相同,可证明实现结果正确。

功能:通过LK和DIN的输入在DOUT端口能够控制输出:锁存状态和传送状态,主要通过LK的高低电平来实现,当LK为高电平时,可传送,当LK为低电平时,为锁存状态。本电路成功实现了4位锁存器功能。

4.结束语(设计的收获、体会等)

为了写这次课程设计,我又去温习了一下计算机组成原理课程的组合逻控制器设计和微程序设计。深刻理解了计算机发出控制信号的两种方式。能够将课堂上的知识应用于实践,提高了自己综合的水平,收获颇多。

此外,通过此次课程设计我学习到了运用VHDL进行FPGA/CPLD设计的基本步骤和方法,熟悉EDA的设计、模拟调试工具的使用,体会FPGA/CPLD技术相对于传统开发技术的优点,同时培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。5.参考资料

[1] 袁静波等. 计算机组成与结构.北京:机械工业出版社,2011.

[2] 陈耀和.VHDL语言设计技术[M]. 北京:电子工业出版社,2004.

[3] 汉泽西.EDA技术及其应用[M]. 北京:北京航空航天出版社,2004

[4] 苗丽华等. VHDL数字电路设计教程北京:电子工业出版社,2012

[5] 李云松,宋锐Xilinx FPGA数据基础(VHDL)版[M] 西安电子科技大学出版社,2008.

四、设计时间与安排

1、设计时间:2周

2、设计时间安排:

熟悉实验设备、收集资料:2 天

设计图纸、实验、计算、程序编写调试:8 天

编写课程设计报告: 2 天

答辩:1 天

TSPC锁存器的设计与HSPICE仿真

IC课程设计报告 题目TSPC锁存器的设计与HSPICE仿真学院 专业 班级 学生姓名 日期

指导教师(签字) HSPICE简介 SPICE(Simulator Program with Integrated Circuit Emphasis,以集成电路为重点的模拟程序)模拟器最初于20世纪70年代在berkeley开发完成,能够求解描述晶体管、电阻、电容以及电压源等分量的非线性微分方程。SPICE 模拟器提供了许多对电路进行分析的方法,但是数字VLSI电路设计者的主要兴趣却只集中在直流分析(DC analysis)和瞬态分析(transient analysis)两种方法上,这两种分析方法能够在输入固定或实时变化的情况下对节点的电压进行预测。SPICE程序最初是使用FORTRAN语言编写的,所以SPICE就有其自身的一些相关特点,尤其是在文件格式方面与FORTRAN有很多相似之处。现在,大多数平台都可以得到免费的SPICE版本,但是,往往只有商业版本的SPICE 才就有更强的数值收敛性。尤其是HSPICE,其在工业领域的应用非常广泛,就是因为其具有很好的收敛性,能够支持最新的器件以及互连模型,同事还提供了大量的增强功能来评估和优化电路。PSPICE也是一个商业版本,但是其有面向学生的限制性免费版本。本章所有实例使用的都是HSPICE,这些实例在平台版本的SPICE中可能不能正常运行。 虽然各种SPICE模拟器的细节随着版本和操作平台的不同而各不相同,但是所有版本的SPICE都是这样工作的:读入一个输入文件,生产一个包括模拟结果、警告信息和错误信息的列表文件。因为以前输入文件经常是以打孔卡片盒的方式提供给主机的,所以人们常常称输入文件为SPICE“卡片盒(deck)”,输入文件中的每一行都是一张“卡片”。输入文件包含一个由各种组件和节点组成的网表。当然输入文件也包含了一些模拟选项、分析指令以及器件模型。网吧可以通过手工的方式输入,也可以从电路图或者CAD工具的版图(layout)中提取。 一个好的SPICE“卡片盒”就好像是一段好的软件代码,必须具有良好的可读性、可维护性以及可重用性。适当地插入一些注释和空白间隔有助于提高“卡片盒”的可读性。一般情况下,书写SPICE“卡片盒”的最好方法就是:先找一个功能完备、正确的“卡片盒”范例,然后在此基础上对其进行修改。

算术逻辑运算单元ALU剖析

燕山大学 EDA课程设计报告书题目:算术逻辑逻辑单元ALU 姓名: 班级: 学号: 成绩:

一、设计题目及要求 题目名称:算术运算单元ALU 要求: 1.进行两个四位二进制数的运算; 2.算术运算:A+B, A-B, A×B; 3.逻辑运算:A and B, A or B, A not, A xor B; 4. 用数码管显示算术运算结果,以LED指示灯显示逻辑运算结果。 二、设计过程及内容 1.整体设计思路 (1)根据设计要求将题目划分为五个模块。包括两个逻辑运算模块,两个算术运算模块,和一个控制模块。其中逻辑运算模块为A and B和A or B,A not和A xor B;算术模块为A±B,A×B。 (2)因为需要进行四位二进制数的运算,因此用A3,A2,A1,A0表示四位二进制数A,用B3,B2,B1,B0表示四位二进制数B,用C4,C3,C2,C1表示四位二进制数C。其中A,B为输入,C为输出。

2.分模块设计 (1)A+B和A-B模块(李佳乐负责) A+B可以直接通过74283 两个四位二进制数加法器实现。A-B可以看作A+(-B),即A加B的补码来实现。同时再设计一个转换控制端M。M=0时实现A+B,M=1时实现A-B。最后再设计一个总的控制端K1,K1=1时模块正常工作,K1=0时不工作。做加法时,C0为进位输出,C0输出1表示有进位,做减法时,C0为借位输出,C0输出1表示有借位。通过74283五位输出,进入译码器将五位变成八位输出,在通过数码管显示。 A+B,A-B总原理图如下:

A+B,A-B分原理图如下:

译码器原理图如下: 扫描电路原理图如下:

ALU(算术逻辑运算单元)的设计,南京理工大学紫金学院vhdl实验报告,eda

EDA技术与应用 实验报告 实验名称:ALU(算术逻辑运算单元)的设计 姓名: 学号: 班级:通信 时间:2013 南京理工大学紫金学院电光系

一、实验目的 1、学习包集和元件例化语句的使用。 2、学习ALU电路的设计。 二、实验原理 1、ALU原理 ALU的电路原理图如图1 所示,主要由算术运算单元、逻辑单元、选择单元构成。 图1 ALU功能表如表1 所示。 表1 2、元件、包集 在结构体的层次化设计中,采用结构描述方法就是通过调用库中的元件或者已经设计好的模块来完成相应的设计。在这种结构体中,功能描述就像网表一样来表示模块和模块之间的互联。如ALU 是由算术单元、逻辑单元、多路复用器互相连接而构成。而以上三个模块是由相应的VHDL 代码产生的,在VHDL 输入方式下,如果要将三个模块连接起来,就要用到元件例化语句。

元件例化语句分为元件声明和元件例化。 (1)元件声明 在VHDL 代码中要引入设计好的模块,首先要在结构体的说明部分对要引入的模块进行说明。然后使用元件例化语句引入模块。 元件声明语句格式: component 引入的元件(或模块)名 port( 端口说明); end component; 注意:元件说明语句要放在“architecture”和“begin”之间。 (2)元件例化语句 为将引入的元件正确地嵌入到高一层的结构体描述中,就必须将被引用的元件端口信号与结构体相应端口信号正确地连接起来,元件例化语句可以实现该功能。 元件例化语句格式: 标号名:元件名(模块名) port map(端口映射); 标号名是元件例化语句的唯一标识,且结构体中的标识必须是唯一的;端口映射分为:位置映射、名称映射。 位置映射指 port map 中实际信号的书写顺序与component 中端口说明中的信号书写顺序一致,位置映射对书写顺序要求很严格,不能颠倒;名称映射指port map 中将引用的元件的端口信号名称赋予结构体中要使用元件的各个信号,名称映射的书写顺序要求不严格,顺序可以颠倒。 (3)包集 在实体及结构体中定义的对象、数据类型,对另外代码的实体是不能使用的。但是在同一工程的不同VHDL 文件中,有些对象、数据类型、子程序等常常被重复使用。为方便VHDL 代码的编写,简化电路设计,故引入包集。包集也称为程序包。 包集主要由两部分组成:程序包说明和程序包体。其中,程序包体是可选的,一般程序包说明列出所有项的名称,而程序包体给出各项的细节。 程序包说明中包含的内容很多,只要是通用的全局量,都可以在程序包中加以说明。主要内容如下: 对象(常量、变量、信号)的数据类型说明。 对象(常量、变量、信号)子类型的数值范围说明。 函数与过程说明。 元件语句说明。 程序包说明的书写格式如下: package 程序包名 is 说明语句; end 程序包名; 程序包名:设计者自定义便于记忆的标识符。说明语句:包括各种类型的说明语句。

TSPC锁存器的设计与HSPICE仿真设计

IC课程设计报告 题目 TSPC锁存器的设计与HSPICE仿真学院 专业 班级 学生姓名 日期 指导教师(签字)

HSPICE简介 SPICE(Simulator Program with Integrated Circuit Emphasis,以集成电路为重点的模拟程序)模拟器最初于20世纪70年代在berkeley开发完成,能够求解描述晶体管、电阻、电容以及电压源等分量的非线性微分方程。SPICE 模拟器提供了许多对电路进行分析的方法,但是数字VLSI电路设计者的主要兴趣却只集中在直流分析(DC analysis)和瞬态分析(transient analysis)两种方法上,这两种分析方法能够在输入固定或实时变化的情况下对节点的电压进行预测。SPICE程序最初是使用FORTRAN语言编写的,所以SPICE就有其自身的一些相关特点,尤其是在文件格式方面与FORTRAN有很多相似之处。现在,大多数平台都可以得到免费的SPICE版本,但是,往往只有商业版本的SPICE 才就有更强的数值收敛性。尤其是HSPICE,其在工业领域的应用非常广泛,就是因为其具有很好的收敛性,能够支持最新的器件以及互连模型,同事还提供了大量的增强功能来评估和优化电路。PSPICE也是一个商业版本,但是其有面向学生的限制性免费版本。本章所有实例使用的都是HSPICE,这些实例在平台版本的SPICE中可能不能正常运行。 虽然各种SPICE模拟器的细节随着版本和操作平台的不同而各不相同,但是所有版本的SPICE都是这样工作的:读入一个输入文件,生产一个包括模拟结果、警告信息和错误信息的列表文件。因为以前输入文件经常是以打孔卡片盒的方式提供给主机的,所以人们常常称输入文件为SPICE“卡片盒(deck)”,输入文件中的每一行都是一张“卡片”。输入文件包含一个由各种组件和节点组成的网表。当然输入文件也包含了一些模拟选项、分析指令以及器件模型。网吧可以通过手工的方式输入,也可以从电路图或者CAD工具的版图(layout)中提取。 一个好的SPICE“卡片盒”就好像是一段好的软件代码,必须具有良好的可读性、可维护性以及可重用性。适当地插入一些注释和空白间隔有助于提高“卡片盒”的可读性。一般情况下,书写SPICE“卡片盒”的最好方法就是:先找一个功能完备、正确的“卡片盒”范例,然后在此基础上对其进行修改。 二、要与要求 在两相时钟技术中,必须十分小心的对两个时钟信号进行布线以保证它们的

计算机组成原理实验报告 算术逻辑运算单元实验

西华大学数学与计算机学院实验报告 课程名称:计算机组成原理年级:2011级实验成绩: 指导教师:祝昌宇姓名:蒋俊 实验名称:算术逻辑运算单元实验学号:312011*********实验日期:2013-12-15 一、目的 1. 掌握简单运算器的数据传输方式 2. 掌握74LS181的功能和应用 二、实验原理 (1)ALU单元实验构成 1、结构试验箱上的算术逻辑运算单元上的运算器是由运算器由2片74LS181构成8字长的ALU 单元。 2、2片74LS373作为2个数据锁存器(DR1、DR2),8芯插座ALU-OUT作为数据输入端,可通过短8芯扁平电缆,把数据输入端连接到数据总线上。 3、运算器的数据输出由一片74LS244(输出缓冲器)来控制,8芯插座ALU-OUT作为数据输出端,可通过短8芯扁平电缆把数据输出端连接到数据总线上。 (2)ALU单元的工作原理 数据输入锁存器DR1的EDR1为低电平,并且D1CK有上升沿时,把来自数据总线上的数据打入锁存器DR1。同样,使EDR2为低电平,并且D2CK有上升沿时,把来自数据总线上的数据打入锁存器DR2。 算术逻辑运算单元的核心是由2片74LS181构成,它可以进行2个8位二进制数的算术逻辑运算,74LS181的各种工作方式可通过设置其控制信号来实现(S0、S1、S2、S3、M、CN)。当实验者正确设置了74LS181的各个控制信号,74LS181会运算数据锁存器DR1、DR2内的数据。由于DR1、DR2已经把数据锁存,只要74LS181的控制信号不变,那么74LS181的输出数据也不会发生改变。 输出缓冲器采用74LS244,当控制信号ALU-O为低电平时,74LS244导通,把74LS181的运算结果输出到数据总线;ALU-O为高电平时,74LS244的输出为高阻。

D锁存器版图设计实验报告

第一章:绪论 1.1 简介 1.1.1 集成电路 集成电路版图设计是电路系统设计与集成电路工艺之间的中间环节。通过集成电路版图设计,将立体的电路系统转变为二维平面图形。利用版图制作掩模板,就可以由这些图形限定工艺加工过程,最终还原为基于半导体材料的立体结构。 以最基本的MOS器件为例,工艺生产出的器件应该包含源漏扩散区、栅极以及金属线等结构层。按照电路设计的要求,在版图中用不同图层分别表示这些结构层,画好各个图层所需的图形,图形的大小等于工艺生产得到的器件尺寸。正确摆放各图层图形之间的位置关系,绘制完成的版图基本就是工艺生产出的器件俯视图。 器件参数如MOS管的沟道尺寸,由电路设计决定,等于有源区与栅极重叠部分的尺寸。其他尺寸由生产工艺条件决定,不能随意设定。 在工艺生产中,相同结构层相连即可导电,而不同结构层之间是由氧化层隔绝的,相互没有连接关系,只有制作通孔才能在不同结构层之间导电。与工艺生产相对应的版图中默认不同图层之间的绝缘关系,因此可以不必画氧化层,却必须画各层之间的通孔。另外,衬底在版图设计过程中默认存在,不必画出。而各个N阱、P阱均由工艺生产过程中杂质掺杂形成,版图中必须画出相应图形。 1.1.2 版图设计基本知识 版图设计是创建工程制图(网表)的精确的物理描述的过程,而这一物理描述遵守由制造工艺、设计流程以及仿真显示为可行的性能要求所带来的一系列约束。版图设计得好坏,其功能正确与否,必须通过验证工具才能确定。版图的验证通常包括三大部分:设计规则检查(DRC)、电学规则检查(ERC)和版图与电路图对照(LVS)。只有通过版图验证的芯片设计才进行制版和工艺流片。 设计规则的验证是版图与具体工艺的接口, 因此就显得尤为重要, Cadence 中进行版图验证的工具主要有dracula和diva。Dracula 为独立的验证工具, 不仅可以进行设计规则验证(DRC) , 而且可以完成电学规则验证(ERC)、版图与电路验证(LV S)、寄生参数提取(L PE) 等一系列验证工作, 功能强于Diva。 1.2 软件介绍 Cadence是一个大型的EDA软件,它几乎可以完成电子设计的方方面面,包括ASIC 设计、FPGA设计和PCB板设计。Cadence在仿真、电路图设计、自动布局布线、

算术逻辑运算实验

实验报告 实验项目:算术逻辑运算实验(试验一) 课程名称:计算机组成原理 姓名:学号同组姓名:学号:实验位置(机号): 实验日期 实验1.掌握简单运算器的数据传送通路 目的2.验证运算器功能发生器(74LS181)的组合功能 3.验证带进为控制的算术运算器功能发生器(74LS181)的功能 4.按指定的数据完成几种制定的算术运算 5.验证移位控制的组合功能 实验YY-Z02计算机组成原理教学实验系统一台,排线若干。设备 实验 内容1.实验原理 (算 运算器实验原理图 法、 程 T4______ ALU-B 序、

_____ _____ 进位CyCn 步骤 299-B 判零_____ M 74LS2 电路CyNCn 和方 S0 99 ALU S1 法) (74LS181) S2 S3 _____I/O-RINPUT Ai =“0”B-DA1DA1 (74LS273)DA2

(74LS273)B-DA2 实验中所用的运算器数据通路图如图1-1所示,算术逻辑实验接线图如图1-2所示。图中所示的是由两片段74LS181芯片以并/串形式构成的8位字长的运算器。右方为低压4位运算芯片,左方为高4位运算芯片。低位芯片的进位输出端C(n+4)与高芯片的进位输入端CN相连,高位芯片的进位输出引至外部。两个芯片的控制端S0~S3和M各自相连。 2.实验步骤 1)算数逻辑运算 i.输入单元置数一 ii.设置I/O-R# = 0 iii.ALU-B# =1 iv.B-DA1 _| ̄|_将输入单元的输入数据存入DA1中 v.输入单元置数据二 vi.B-DA2 _| ̄|_将数据存入DA2中 vii.设置S 3 -------S 0、M、Cn根据要求按照定义操作设置完成运算viii. ix. x.I/O-R# = 1 ALU-B = 0运算结果送总线 IO-W ̄|_| ̄总线数据送显示单元显示 数据1.算数逻辑运算

8位ALU(算术逻辑单元)verilog语言Word版

大连理工大学城市学院 FPGA实验报告 实验内容:8位ALU 系别班级:电子1004班 学号: 姓名: 日期:2013.4.14

一.设计概述: 一种基于可编程逻辑器件FPGA和硬件描述语言的8位的ALU的设计方法。该ALU采用层次设计方法,有寄存器模块、控制模块和显示模块组成,能实现8位无符号数的取值、加减和4种逻辑运算(与、或、异或、同或)。该ALU在QuartusII软件环境下进行功能仿真,通过DE2验证。 二.设计功能: 1、该处理器的数据宽度为8bit,可以实现算术加法、减法、逻辑与、逻辑或、逻辑非、逻辑与非、逻辑或非和逻辑异或等8种运算。 2、用选择端opcode [2:0] 选择8种运算,2个操作数分别是a_r [7:0]和b_r[7:0],运算结果是alu_out[7:0];并定义选择如下。 3、使用DE2板上的3个拨码开关设置当前ALU的运算功能,再由8个拨码开关给定数据A和数据B,由一个按键key手动提供脉冲。 三.设计方案: 本设计共有5个模块。 1)脉冲输出器(key手动脉冲),计数依次产生4个脉冲到各个部件,第一个脉冲启动信号。 2)寄存器A,第二个脉冲来时锁存数据A,并在数码管上显示。 3)寄存器B,第三个脉冲来时锁存数据B,并在数码管上显示。 4)8位ALU,第四个脉冲来时进行运算,并锁存结果alu_out。 5)结果显示器,将结果显示通过DE2上的数码管显示。 四.程序分析: 主程序模块: module alu8(clk,clk_r,rst,a,b,alu_out,opcode,sw_ab,HEX1, HEX0, HEX7, HEX6, HEX5, HEX4); input clk,rst,clk_r; input [7:0] sw_ab; input [2:0] opcode; output [6:0] HEX1, HEX0, HEX7, HEX6, HEX5, HEX4;

计组课设alu设计和4位锁存器设计

计算机与通信工程学院 计算机组成原理课程设计 专业名称计算机科学与技术 班级学号 学生姓名 指导教师 设计时间2017.12.23~2018.1.3

课程设计任务书 专业:计算机科学与技术学号:学生姓名(签名):设计题目: 一、设计实验条件 综合楼1207实验室 硬件:PC机 软件:Xilinx ISE ModelSim 编程语言:VHDL 二、设计任务及要求 设计任务: 1.7、16、29、42号指令的设计; 2.模型机的ALU; 3.4位锁存器; 要求: ●总线结构:单总线,数据总线位数8位、地址总线8 位; ●存储器:内存容量64K*8bit ●控制器:用硬联线控制器实现26位微操作控制信号 ●运算器:单累加器,实现加、减等8种操作 ●外设: ?输入:用开关输入二进制量 ?输出:7段数码管和LED显示 ●指令系统规模:64条指令,7种类型,5种寻址方式 三、设计报告的内容 1.设计题目与设计任务(设计任务书) 题目:8位模型机设计-指令系统及ALU设计

设计内容如下: 1、指令系统设计: 2、模型机硬件设计 题目:模型机ALU设计(8功能ALU设计)。 功能:实现减法、减法、与、或、进位加法、进位减法、取反、输出。 3、逻辑电路设计 题目:4位锁存器设计 功能:只要时钟信号为逻辑“1”,锁存器就让输入数据传送至器输出端。 但是,在时钟信号为低电平的整个期间,其输出时钟保持不变。 2.前言(绪论)(设计的目的、意义等) 融会贯通计算机组成原理课程的内容,通过知识的综合运用,加深对计算机系统各个模块的工作原理及互相联系的认识; 学习运用VHDL进行FPGA/CPLD设计的基本步骤和方法,熟悉EDA的设计、模拟调试工具的使用,体会FPGA/CPLD技术相对于传统开发技术的优点; 培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验 3.设计主体(各部分设计内容、分析、结论等) 【系统设计】 1.模型机逻辑框图

湘潭大学计算机原理 实验一 算术逻辑单元ALU实验报告

计算机原理与设计 实验报告 实验一算术逻辑单元ALU 姓名: XXX 学号: 2013551728 班级: 13级软件工程2班 实验日期: 2014年 10 月22 日

一.实验目的 1.理解算术逻辑单元ALU的工作原理。 2.掌握算术逻辑单元ALU的设计方法。 3.验证32位算术逻辑单元ALU的加、减、与、移位功能。 4.按给定数据,完成几种指定的算术和逻辑运算。 二.实验内容 算术逻辑单元ALU的设计如图1-1所示。其中运算器addsub32能实现32位的加减运算。参加运算的两个32位数据分别为A[31..0]和B[31..0],运算模式由aluc[3..0]的16种组合决定,而aluc[3..0]的值由4位2进制计数器LPM_COUNTER产生,计数时钟是Sclk(图1-1);r[31..0]为输出结果,Z为运算后的零标志位。ALU功能如表1-1所示。 表1-1 ALU的运算功能 注1、* 表示每一位都移至下一更高有效位, “+”是逻辑或,“加”是算术加

三.实验步骤 (1)设计ALU元件 ALU元件设计代码: module alu (a,b,aluc,r,z); input [31:0] a,b; input [3:0] aluc; output [31:0] r; output z; assign r = cal(a,b,aluc); assign z = ~|r; function [31:0] cal; input [31:0] a,b; input [3:0] aluc; casex (aluc) 4'bx000: cal=a+b; 4'bx100: cal=a-b; 4'bx001: cal=a&b; 4'bx101: cal=a|b; 4'bx010: cal=a^b; 4'bx110: cal={b[15:0],16'h0}; 4'bx011: cal=b<>a[4:0]; 4'b1111: cal=$signed(b)>>>a[4:0]; endcase endfunction endmodule (2)以原理图方式建立顶层文件工程 原理图如下:

FPGA和Verilog设计中的latch锁存器的问题

FPGA和Verilog设计中的latch锁存器的问题 一直都知道fpga中有latch这么一回事,但是一直都不太清楚到底什么是锁存器,它是怎么产生的,它到底和寄存器有多少区别,它怎么消除。为什么说他不好? 一,是什么 锁存器是一种在异步时序电路系统中,对输入信号电平敏感的单元,用来存储信息。一个锁存器可以存储1bit的信息,通常,锁存器会多个一起出现,如4位锁存器,8位锁存器。 锁存器在数据未锁存时,输出端的信号随输入信号变化,就像信号通过一个缓冲器,一旦锁存信号有效,则数据被锁存,输入信号不起作用。因此,锁存器也被称为透明锁存器,指的是不锁存时输出对于输入是透明的。 二锁存器与寄存器的区别: 两者都是基本存储单元,单锁存器是电平触发的存储器,触发器是边沿触发的存储器。本质是,两者的基本功能是一样的,都可以存储数据。意思是说一个是组合逻辑的,一个是在时序电路中用的,时钟出发的。 三,锁存器的危害: 对毛刺敏感,不能异步复位,所以上电以后处于不确定的状态; Latch会使静态时序分析变得非常复杂; 在PLD芯片中,基本的单元是由查找表和触发器组成的,若生成锁存器反而需要更多的资源。 第三条也是最基本的原因。 四,产生的原因********ps重重之重 上面说了那没多只是觉得网上的没把锁存器说明白。下面的才是重点。

1,case 2,if-------else if 3,always@(敏感信号表) 五解决 1.case——————加default: 关于defalut的情况:一是可以default:data=1‘bx;这个x表示未知,在综合时可以避免产生锁存器。在仿真时是红线表示。 二是default:data=0;这样产生一个默认的情况。 2.if-----------------------一定要有else语句。 3.always---------如是说道:在赋值表达式右边参与赋值的信号都必须在always@(敏感电平列表)中列出。 如果在赋值表达式右端引用了敏感电平列表中没有列出的信号,那么在综合时,将会为该没有列出的信号隐含地产生一个透明锁存器。 4. 付初值。好用的 六,怎么看到锁存器。 其实我挺讨厌网上说了好多的废话,到最后我都不知道是啥。所以我建议大家自己编成,在看看综合后的RTL图,以及技术RTL图,看看到底有什么不同,到底锁存器长啥样,漂亮不漂亮,嘿 嘿。以下是我的截图。供参考: 这个是我在case语句中加入了default语句的综合结果。

多功能算术逻辑单元(ALU)设计

多功能算术逻辑单元(ALU)设计 安徽理工大学 计算机组成原理课程设计说明书 题目: 多功能算术逻辑单元设计 院系:计算机科学与工程学院专业班级:信息08-1班学号:20XX303007 学生姓名:指导教师: 20XX年 12 月 8 日 安徽理工大学课程设计任务书 计算机科学与工程学院计算机硬件教研室 学号 20XX303007 学生姓名专业信08-1 设计题目多功能运算逻辑单元设计设计技术参数系统平台:Windows xp 开发工具: QuartusII 设计要求工作量 1)实现5条及以上的指令系统的硬连线的控制器的设计; 2)需要增加的指令自己加入,完成设计、测试过程,并给出测试结果。课程设计报告要求不少于3000字。源程序要求不少于300行 11月16日- 11月22日查找相关资料 11月23日- 11月29日构建框架 11月30日-12月6日设计算法 12月6日-12月12日检查改错 12月12日-12月16日撰写课程设计报告工作计划参考资料 [1] 白中英.计算机组成原理.科学出版社.20XX [2] 姜

咏江.基于QuartusII的计算机核心设计.清华大学出版社.20XX [3] 林涛.数字电子技术基础.清华大学出版社.20XX 指导教师签字教研室主任签字 20XX 年 12月8日 安徽理工大学课程设计成绩评定表 学生姓名:学号:20XX303007 专业班级:信08-1 课程设计题目:多功能算术逻辑单元设计指导教师评语:成绩:指导教师: 年月日 目录 1、简要介绍 ................................................ ............. 1 2、详细设计 ................................................ ............. 1 使用QuartusII 设计逻辑电路................... 1 3、总结 ................................................ .. (7) 图1 c.验证4位ALU是否正确,先进行编译,编译成功后进行仿真验证。可在主菜单中选择processing,然后选择Simulator Tool,单击OPEN按钮建立仿真文件。在仿真波

VHDL语言完成4位十进制计数器、4位锁存器、测频控制器的设计

电子设计自动化实验 实验名称综合性实验二、硬件描述语言的层次化设计 实验设备 (1)EDA实验箱(型号 ),(2)计算机,(3)EDA软件(QuartusII) 实验目的 1、熟悉EDA软件(QuartusII)的硬件描述语言输入设计方法; 2、掌握VHDL语言的层次化设计方法和仿真分析方法; 3、了解功能仿真、时序仿真和时序参数分析的意义。 实验容 1、用VHDL语言完成4位十进制计数器、4位锁存器、测频控制器的设计,包括 编译、综合、仿真;** 2、采用层次化设计的方法,用VHDL语言的元件例化语句写出4位十进制频率计的顶层文件,并分别给出其测频功能和时序仿真分析波形图,并加以分析;** 3、用EDA实验箱进行硬件验证,并分析测量结果;建议硬件测试实验电路采用NO.0 电路结构,待测信号F_IN接clock0;测频控制时钟CLK接clock2;** 4、在2基础上将其扩展为8位十进制频率计,或带译码输出的4位十进制频率计。实验报告要求 根据以上实验容写出实验报告: 1、简述4位频率计模块的工作原理及其设计、编译、仿真分析过程; 2、给出模块设计文件、仿真测试文件、仿真结果波形图及其分析报告; 3、简述硬件验证过程和验证结果。 1、简述4位频率计模块的工作原理

根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。 这3个信号可以由一个测频控制信号发生器产生,即TESTCTL,它的设计要,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。 在停止计数期间,首先需要产生一个锁存信号LOAD,在该信号上升沿时,将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。 设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。 每一个计数器CNT10有4位输出(0000~1001分别表示十进制中的0~9),因此需要用四片CNT10。四片CNT10应串接起来,当前一片CNT10产生进位信号后,由CARRY_OUT输出跳变高电平,引入下一片CNT10(也即输入时钟信号CLK)。 四位十进制计数器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10; ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

EDA 74LS3738位三态锁存器设计

74LS3738位三态锁存器设计 1.设计背景和设计方案 利用元件例化语句和FOR_GENERATE语句完成一个8位三态锁存器。 图(1) 74LS373引脚图 定义的端口信号D为数据输入端;Q为数据输出端;OE为输出能端,若OE=1,则Q8~Q1的输出为高阻态,若OE=0,则输出保存在锁存器中;G为数据锁存控制端,若G=1,D8~D1输入端的信号进入74LS373中的8位锁存器中,若G=0,74LS373中的8位锁存器将保持原先锁入的信号值不变。 2.方案实施 2.1 VHDEL程序如下 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SN74373 IS PORT (D : IN STD_LOGIC_VECTOR( 8 DOWNTO 1 ); OEN ,G : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(8 DOWNTO 1)); END ENTITY SN74373; ARCHITECTURE two OF SN74373 IS SIGNAL sigvec_save : STD_LOGIC_VECTOR(8 DOWNTO 1); BEGIN ProCESS(D, OEN, G, sigvec_save) BEGIN IF OEN = '0' THEN Q <= sigvec_save; ELSE Q <= "ZZZZZZZZ"; END IF; IF G = '1' THEN sigvec_save <=D; END IF; END PROCESS; END ARCHITECTURE two; ARCHITECTURE one OF SN74373 IS COMPONENT Latch PORT ( D, ENA : IN STD_LOGIC;

实验二 算术逻辑单元实验

实验二算术逻辑单元(ALU)的设计与实现 实验目的 1.认识算术逻辑单元的功能及意义 2.掌握算术逻辑单元的结构与实现 3.进一步熟练Modelsim、Vivado软件和Verilog硬件描述语言的使用 4.理解Digilent N4 DDR FPGA开发板上数码管显示原理 实验原理 1.ALU 算术逻辑单元(Arithmetic/Logic Unit , ALU)是现代计算机的核心部件之一。其内部由算术和逻辑操作部件组合而成,可以实现整数加、减等算术运算和与、或等逻辑运算。 一个典型的算术逻辑单元由两路N位输入、一路N位输出、一组功能选择信号和一些标志位(flag)组成。两路N位输入数据作为参与运算的两个操作数,输入到ALU中,通过改变功能选择信号,控制ALU对两操作数进行不同的算术或逻辑运算操作,并将N位的结果输出,与结果一同输出的还有运算产生的标志位,例如运算结果为零的标记信号Z(zero)与运算结果溢出的标记信号O(over)、进位标志C(CY)、符号位S(SF)等,如图2-1所示。 图2- 1ALU模块示意图 在本次实验中,我们把输入和输出的数据长度定为4位,数据输入命名为A、B,数据输出为F,功能控制信号输入为opcode,进位输入为C n,只产生结果为零的zero标志位。功能控制信号opcode的定义如表2-1所示。例如:opcode=0001,运算器实现加法运算。

2.数码管显示 关于N4 DDR开发板上数码管的显示原理,参见前面的实验准备部分内容。实验内容 1.基础实验。用实验调试软件验证ALU的功能,并操作分析、记录结果。 图2- 2 ALU虚拟实验示意图 (1)运算功能和控制信号 ①输入输出对于的开关指示灯分配如下: 输入信号A:SW(4-7) B:SW(3-0) Cn:SW8 opcode:SW(12-9) 输出信号F:LD(12-15) 标志位S :LD(3) Z LD(2) O: LD(1) C: LD(0) ②各种运算对应的控制信号及功能,如下表。

ALU实验报告

算术逻辑部件ALU实验报告 一、实验目的 (1)熟悉硬件描述语言及开发环境,了解硬件系统开发的基本过程。 (2)掌握ALU基本设计方法和简单运算器的数据传送通路。 (3)验证ALU的功能。 二、实验环境 (1)硬件环境:安装有Windows 7 或以上操作系统的PC,THINPAD教学计算机。(2)软件开发:FPGA开发工具软件Xilinx ISE 12.3或以上。 三、实验内容 (1)根据实验原理中的要求,用VHDL语言实现一个简单的ALU。 (2)在教学计算机THINPAD上验证实现的ALU的功能。 四、实验原理 算术逻辑部件ALU的主要功能是对二进制数据进行定点算术运算、逻辑运算和各种移位操作等。算术运算包括定点加减乘除运算,逻辑运算主要用逻辑与、逻辑或、逻辑异或和逻辑非等操作。ALU通常有两个数据输入端A和B输出操作数,一个数据输出端Y以及标志位输出结果,通过输入操作码op来确定所要进行的操作,本实验通过实现一个状态机,根据状态机状态的变化来输人操作数及操作码,并最终实现不同的运算,将结果和标志位呈现出来。 本实验中的ALU要求实现基本的算术运算、逻辑运算、移位运算等,具体功 五、实验步骤 本实验通过VHDL语言实现一个比较简单的ALU模块。 (1)用VHDL语言编写ALU功能代码,并用状态机对其进行控制,使其完成实验要求的操作。操作码和操作数的输入用微型开关SW0~SW15,计算结果的输出用数字机上的LED灯来展示。 (2)将代码下载到教学机的FPGA中,并调试完成。 (3)在THINPAD教学机上运行时,RST和时钟均用手动开关或按钮,便于演示。操作码和操作数在开关SW0~SW15上输入,为便于观察和调试,每次ALU得到操作数,最好可以在LED上显示一下,最后的运算结果在L0~L15上显示,标志位

四位ALU算术逻辑单元设计实验

实 验 报 告 实 验 人: 赵** 学 号: 09***** 日 期: 2010-10-08 院(系): 专业(班级): 09 实验题目: 四位ALU 算术逻辑单元设计实验 一. 实验目的 1. 了解ALU (算术逻辑单元)的功能和使用方法; 2. 认识和掌握超前(并行)进位的设计方法; 3. 认识和掌握ALU 的逻辑电路组成; 4. 认识和掌握ALU 的设计方法。 二. 实验原理 从结构原理图上可推知,本实验中的ALU 运算逻辑单元由4个一位的ALU 运算逻辑单元所组成。每一位的ALU 电路由全加器和函数发生器所组成,如下图(1)所示。事实上,ALU 的设计是在全加器的基础上,对全加器功能的扩展来实现符合要求的多种算术/逻辑运算的功能。为了实验多种功能的运算,An 、Bn 数据是不能直接与全加器相连接的,它们受到功能变量F3-F1的制约,因此,可由An 、Bn 数据和功能变量F3-F1组合成新的函数Xn 、Yn ,然后,再将Xn 、Yn 和下一位进位Cn-1通过全加器进行全加运算以实现所需的运算功能。ALU 中C0为最低位的进位输入端,C4 辑表达式(n=1、2、3、4)如下: Sn=Xn ⊕Yn ⊕Cn-1 Cn=XnYn+(Xn+Yn)Cn-1 令Pn=Xn+Yn , Gn=XnYn 则Cn=Gn+PnCn-1

实验要求进位位采用超前(先行、并行)进位实现。超前进位电路同时形成各位进位,因此实现快速进位,达到快速加法的目的。这种加法器称为超前进位加法器。 各超前(先行)进位位的形成根据表达式Cn=XnYn+(Xn+Yn)Cn-1来确定,其中n=1、2、3、4。后产生的进位与前进位有关,最终每个进位也只和Xn、Yn、C0有关,而Xn、Yn、又是An、Bn的函数,如: C1=G1+P1C0=X1Y1+(X1+Y1)C0 C2=G2+P2C1=X2Y2+(X2+Y2)X1Y1+(X2+Y2)(X1+Y1)CO 一些控制信号如F3-F1为功能控制信号,控制着4位ALU运算逻辑单元的八种功能操作:A4-A1和B4-B1为ALU的两组数据输入端;S4-S1为了4位ALU的4个输出端,S表示为S=SS43S2S1;C4为4位ALU的最高位进位输出端,依次还有C3、C2、C1。(考虑级联关系时,如有必要可增加级联控制端G)。 三. 实验内容 依照ALU的原理与逻辑结构原理图,用超前进位的方法设计能实现下面八种功能操作的4位ALU,并对电路进行封装。 要求: 输入信号:A4-A1、B4-B1、F3-F1、低位进位C0、(级联控制端G); 输出信号:S4-S1、进位C4。 4位ALU的八种功能如下:

超高速低压CMOS-CML缓冲器和锁存器的设计

超高速低压CMOS CML缓冲器和锁存器的设计 摘要-一个超高速电流模式逻辑(CML)的综合研究和新型再生CML锁存器的设计将会被说明。首先,提出一种新的设计过程,系统地设计了一个锥形的CML缓冲器链。接下来,将介绍两个高速再生锁存电路,能够在超高速数据速率运行。实验结果表明,这种新的锁存结构相比传统的CML锁存电路在超高频率有更高的性能。它也表明,无论是通过实验以及使用效率的分析模型,为什么CML缓冲器优于CMOS反相器在高速低压的应用。 1.引言 电信网络传输的数据量迅速增长,最近引起对千兆通信网络的高速电路设计的重视。波分复用(WDM)和时分多路复用(TDM)将是发达国家在下一代传输系统使用的。大量的容量传输实验已经使用每一个通道数据速率为10Gb/s的用于SONET OC-192和40Gb/s的用于SONET OC-768的WDM系统。高速集成电路(IC)技术,具有很高的数据速率,因此用于WDM和TDM系统。纳米CMOS技术的进步已使CMOS集成电路接替砷化镓和InP器件迄今声称的领域。 设计一个高速CMOS电路在MOS器件操作非常具有挑战性。在千兆系统块,通信系统需要由利用最少数量有源器件的简单电路来实现。部分在通信收发器处理高速信号的电路块可能要放弃使用pMOS器件,因为它们低劣的单位增益频率。这反过来对超高速电路设计有约束。 缓冲器和锁存器是许多有一个通信收发器和一个串行链路的高速块的核心。作为一个千兆通信系统的例子,图1描绘了一个典型的光收发器的框图。前端的电流模式逻辑(CML)的锥形缓冲区链,串行到并行的转换器,时钟和数据恢复(CDR),复用器和解复用器广泛使用高速缓冲器和锁存器。传统的CMOS反相器显示出一些缺点,使得它们不能被广泛使用于高速低压电路。首先,

湘潭大学 计算机组成与原理 算术逻辑单元ALU设计 实验报告

湘 潭 大 学 实 验 报 告 课程名称 计算机原理与设计 实验名称 算术逻辑单元ALU设计实验 页数 专业 班级 同组者姓名 无 组别 学号 姓名 实验日期 一、 实验目的 a) 理解算术逻辑单元ALU 的工作原理。 b) 掌握算术逻辑单元ALU 的设计方法。 c) 验证32位算术逻辑单元ALU 的加、减、与、移位功能。 d) 按给定数据,完成几种指定的算术和逻辑运算。 二、 实验要求 1、做好实验预习,掌握运算器的数据传送通路和ALU 的功能特性,并熟悉本实验中所用的控制台开关的作用和使用方法。 2、写出实验报告,内容是: ①实验目的; ②按理论分析值填写好表1-2、表1-3,给出对应的仿真波形。 ③列表比较实验数据(2)的理论分析值与实验结果值;并对结果进行分析。实验结果与理论分析值比较,有没有不同?为什么? ④通过本实验,你对运算器ALU 有何认识,有什么心得体会? 三、 实验原理 算术逻辑单元ALU 的设计如图1-1所示。其中运算器addsub32能实现32位的加减运算。参加运算的两个32位数据分别为A[31..0]和B[31..0],运算模式由aluc[3..0]的16种组合决定,而aluc[3..0]的值由4位2进制计数器LPM_COUNTER 产生,计数时钟是Sclk (图1-1);r[31..0]为输出结果,Z 为运算后的零标志位。ALU 功能如表1-1所示。 表1-1 ALU 的运算功能 选择端aluc ALU 功能 3 2 1 0 * 0 0 0 B A R 加= * 0 0 1 B A R 与= * 0 1 0 B A R ⊕= * 1 0 0 B A F -= * 1 0 1 B A R +=

编码锁存器电路设计

(一)编码锁存电路设计 entity bianma is port (clk:in std_logic; start:in std_logic; xs:in std_logic_vector(3 downto 0); sjd:in std_logic; qz:out std_logic; s:out std_logic_vector(2 downto 0)); end bianma; architecture Behavioral of bianma is signal q_z:std_logic; signal en:std_logic:='0'; signal q:std_logic_vector(2 downto 0):="000"; begin state:process(start) begin if start'event and start='0' then en<=not en; end if; end process; bm_sc:process(clk,en,sjd,xs) begin if clk'event and clk='1' then if en='1' and sjd='1' then if q_z='1' then case xs is when "1110"=>q<="001";q_z<='0'; when "1101"=>q<="010";q_z<='0'; when "1011"=>q<="011";q_z<='0'; when "0111"=>q<="100";q_z<='0'; when others=>q<="000"; end case; end if; else q<="000";q_z<='1'; end if; end if; end process; s<=q; qz<=q_z; end Behavioral; (二)定时模块 entity dingshi is

相关文档
最新文档