当前位置:文档之家› 多字节、多进制加法运算实验报告

多字节、多进制加法运算实验报告

多字节、多进制加法运算实验报告
多字节、多进制加法运算实验报告

多字节、多进制加减运算

学生:何绍金

学号:201203870408

专业班级:自动化1202

指导老师:杨东勇

2014年12月

一、实验目的

1.学习多字节压缩 BCD 码加减法运算的程序设计;

2.学习单字节有符号数加减运算的程序设计。

二、实验设备

统一电子开发平台

三、实验要求

1.编写通用 4 字节压缩 BCD 码的加、减法运算程序;

2.编写通用单字节有符号二进制数加、减法运算程序;

四、实验原理(单字节带符号数加法运算)

对于简单的8 位加减可以直接调用指令就可以了。例如加法可以使用指令ADD 以及带进位加ADDC,但单字节加减法只能在256 之内进行运算;在实际应用中经常需要进行多字节运算,从而处理更大的数据。该实验介绍单片机BCD 码多字节加、减运算通用程序的设计。

五、实验过程

1.多字节无符号压缩BCD 码加法运算假设多字节无符号被加数的最低字节的地址为R0,加数的最低字节地址为R1,字节数共为len;计算结果的地址于被加数相同。

(1)入口参数:

R0:被加数地址指针;

R1:加数地址指针;

len:字节数。

(2)出口参数:

@R0:计算结果;

rLen:计算结果字节数。

(3)使用资源:ACC,R0、R1,内部RAM 单元len、rlen 及存放被加数、加数、计算结果的内存单元。

示例程序如下:

;多字节无符号压缩BCD 码加法运算

rlen data 30h; 存放计算结果字节数

len data 31h; 存放相加字节数

; r0 定位40h,r1 定位50h

; 此处的程序的问题是前面字节的进位没有处理,

; 只是对最后字节相加处理了进位

ORG 0000h;

ADDl:PUSH PSW ;保护标志寄存器内容

CLR C ;进位位清0

MOV rlen,#00H ;和的字节数先清0

ADD:MOV A,@R0 ;取被加数

ADD A,@R1 ;求和

DA A ;十进制调整

MOV @R0,A ;保存

INC R0 ;地址增1

INC R1

INC rlen ;字节数增1

DJNZ len,ADD ;所有字节未加完继续,否则向下执行

JNC ADD20 ;和的最高字节无进位转ADD20

MOV @R0,#01H ;和的最高字节地址内容为01H

INC rlen

ADD20:POP PSW

RET

END

多字节加法运算一般是按从低字节到高字节的顺序进行的,所以必须考虑低字节向高字节的进位情况,被加数和加数的压缩BCD 码,最大不超过99,而

99+99+1(进位)=199,此时不需要使用ADDC 指令,但当两字节当最低两字节相加后,必须使用“DA A”进行十进制调整,调整后产生进位。而最高两字节相

加后应考虑是否有进位。若有进位,应向和的最高位字节地址写入01H,这时和数将比加数或被加数多出一个字节。

2.单字节带符号数加法运算

编程范例:

两个8 位二进制带符号数加法,被加数和加数分别存于BLK 和BLK+1 单元,和超过8 位要占两个单元,设为SUM 和SUM+1 单元。

解:两个带符号数的加法是作为补码加法处理的。由于和超过8 位,因此,和就是一个16 位带符号数,符号位在16 位数的最高位。为此,直接相加进位是不够的,还要做一些处理。例如-65 和-65 相加,若直接求和产生溢出,即使扩展到16 位,结果也不正确。如:

-65 1 0 1 1 1 1 1 lB

+) -65 1 0 1 1 1 1 1 1B

0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 OB

现在这个16 位数的最高位为0,两个负数相加变为正数,显然是错误的。

处理的方法是先将8 位带符号数扩展成16 位带符号数,然后再相加。若是8 位正数,则高8 位扩展为00H;若是8 位负数,则高8 位扩展为0FFH。这样处理后,再按双字节相加,就可以得到正确的结果。如上例,由于是负数,高8 位应是全1,然后再加:

-65 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1B

+) -65 1 1 1 1 1 1 1 1 1 0 1 l 1 1 1 1B

1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0B,

最高位的进位丢失不计。换算成真值为—130,结果正确。

在编程时,判别加数和被加数的符号位,再决定是否要将高8 位改为0FFH。程序如下:

BLK DATA 30H

SUM DATA 40H

ORG 0000h

MAIN:

MOV R0,#BLK ;R0 指向被加数

MOV R1,#SUM ;R1 指向和

MOV R2,#0 ;高8 位先设为0

MOV R3,#0

MOV A,@R0 ;取出被加数

JNB ACC.7,N1 ;若是正数转移到N1

MOV R2,#0FFH ;若是负数高8 位为全1

N1:INC R0 ;修改即指针

MOV B,@R0 ;取加数到B

JNB B.7,N2 ;若是正数转移N2

MOV R3,#0FFH ;若是负数高8 位为全1

N2:ADD A,B ;低8 位相加.

MOV @R1,A ;存低8 位和

INC R1 ;修改R1 指针

MOV A,R2 ;准备加高8 位

ADDC A,R3 ;高8 位相加

MOV @R1,A ;存高8 位和

SJMP $

END

3.多字节无符号压缩BCD 码减法运算

为了使用“DA A”指令对十进制减法进行调整,必须采用对减数求补相加的方法,以9AH 为模减去减数即得到减数的补数。设被减数低字节地址存在R1,减数低字节地址存在R0,字节数存在len;差的低字节地址存在R0,差的字节数存在rlen。

(1)入口参数:

R0:减数地址指针;

R1:被减数地址指针;

len:字节数

(2)出口参数:

R0:差的地址指针

R3:差的字节数

(3)使用资源:A,R0,R1,内部RAM 单元

范例程序如下:

rlen data 30h ; 存放计算结果字节数

len data 31h ; 存放相加字节数

ORG 0000h;

SUBCD: MOV rlen,#00H ;差字节单元清0

CLR 07H ;符号位清0

CLR C ;借位位清0

33

SUBBCD: MOV A,#9AH ;减数对模100 求补

SUBB A,@R0

ADD A,@R1 ;补码相加

DA A

MOV @R0,A ;存结果

INC R0

INC R1

1NC rlen

CPL C ;进位求反以形成正确借位

DJNZ len,SUBCDl ;未减完去SUBCDl,减完向下执行

JNC SUBCD2 ;无借位去别Ⅸm 返回主程序,否则继续SETB 07H ;有借位,置“1”符号位

SUBCD2: RET

END

程序中对减数求补后与被减数相加,用“DA A”指令进行调整。若二者相加调整后结果无进位(C=0),则表示二者相减有借位;若二者相加调整后有进位(C;

1),则表示二者相减无借位。所以必须对进位标志位C 进行求反操作,才能得到正确结果。

六、实验思考题

1.检查结果是否正确:打开资源管理窗口,键入DS:0030H,窗口便会显示从30H地址开始,寄存器的值,其中,30H是一加数的值,31H则是另一加数的值,在窗口中把30H值改为01,31H改为02,再次运行程序后,在资源管理中键入DS:0040H,40H地址显示的值便是03,结果符合要求。

2.分析DA A指令的作用。

答:被加数A与加数R1都是以补码的形式进行运算,即形式上是十进制的相加,但在单片机中是以二进制进行运算即十六进制进行运算的,结果自然也就是二进制的,DA指令就是为了把结果调整为十进制的运算结果,但以二进制形式存储。

3.说明怎样处理单字节有符号数的减法?

答:先将8位带符号数扩展成16位带符号数,然后再相加。若是8位正数,则高8位扩展为00H;若是8位负数,则高8位扩展成0FFH。这样处理后,再按双字节相加,就可以得到正确的结果。

附:实验源代码:

1.程序清单和注释

BLK DATA 30H

SUM DATA 40H

ORG 0000h

MAIN:

MOV R0,#BLK ;R0 指向被加数

MOV R1,#SUM ;R1 指向和

MOV R2,#0 ;高8 位先设为0

MOV R3,#0

MOV A,@R0 ;取出被加数

JNB ACC.7,N1 ;若是正数转移到N1 MOV R2,#0FFH ;若是负数高8 位为全1 N1:INC R0 ;修改即指针

MOV B,@R0 ;取加数到B

JNB B.7,N2 ;若是正数转移N2 MOV R3,#0FFH ;若是负数高8 位为全1 N2:ADD A,B ;低8 位相加.

MOV @R1,A ;存低8 位和

INC R1 ;修改R1 指针

MOV A,R2 ;准备加高8 位

ADDC A,R3 ;高8 位相加

MOV @R1,A ;存高8 位和

SJMP $

END

74ls160构成n进制计数器应用

实验74ls160组成n进制计数器 一、实验内容 1.掌握集成计数器的功能测试及应用 2.用异步清零端设计6进制计数器,显示选用数码管完成。 二、演示电路 74LS160十进制计数器连线图如图1所示。 图1 74LS160十进制计数器连线图 74161的功能表如表1所示。由表1可知,74161具有以下功能: ①异步清零 当CR(CLR’)=0时,不管其他输入端的状态如何(包括时钟信号CP),计数器输出将被直接置零,称为异步清零。 ②同步并行预置数 在CR=1的条件下,当LD(LOAD’)=0、且有时钟脉冲CP 的上升沿作用时,D0、D1、D2、D3输入端的数据将分别被Q0~Q3所接收。由于这个置数操作要与CP 上升沿同步,且D0、D1、D2、D3的数据同时置入计数器,所以称为同步并行置数。 ③保持 在CR=LD=1的条件下,当EN T=EN P=0,即两个计数使能端中有0时,不管有无CP脉冲作用,计数器都将保持原有状态不变(停止计数)。需要说明的是,当EN P=0, EN T=1时,进位输出C也保持不变;而当ENT=0时,不管EN P状态如

何,进位输出RCO=0。 ④ 计数 当CR =LD =EN P =EN T =1时,74161处于计数状态,电路从0000状态开始,连续输入16个计数脉冲后,电路将从1111状态返回到0000状态,R CO 端从高电平跳变至低电平。可以利用R CO 端输出的高电平或下降沿作为进位输出信号。 连上十进制加法计数器160,电路如图1所示,给2管脚加矩形波,看数码管显示结果,并记录显示结果。 三、用160和与非门组成6进制加法计数器-用异步清零端设计 74160从0000状态开始计数,当输入第6个CP 脉冲(上升沿)时,输出Q 3 Q 2 Q 1 Q 0=0110,此时03Q Q CR ==0,反馈给CR 端一个清零信号,立即使Q 3 Q 2 Q 1 Q 0返回0000状态,接着,CR 端的清零信号也随之消失,74160重新从0000状态开始新的计数周期。 反馈归零逻辑为代码中为1的Q 相与非。n n Q Q CR 12= 电路如图2所示,给2管脚加矩形波,看数码管显示结果,并记录显示结果。

60进制计数器课程设计报告

电子技术基础实验 课程设计 60进制计数器

一、实验目的 (一)掌握中规模集成计数器74LS161的引脚图和逻辑功能。 (二)熟悉555集成定数器芯片的引脚图。 (三)利用74LS161和555定时器构成60进制计数器。 (四)在Multisim软件中仿真60进制计数器。 二、实验容 (一)集成计数器74LS161逻辑功能验证。 (二)用555定时器构成多谐振荡器。 (三)用两片74LS161和555定时器构成60进制计数器。 三、集成计数器介绍 (一)集成计数器74LS161管脚介绍 74LS161是4位二进制同步加法计时器。图1为它的管脚排列图,集成芯片74LS161的CLR是异步清零端(低电平有效),LOAD是异步预置数控制端(低电平有效)。CLK是时钟脉冲输入端,RCO是进位输出端,ENP、ENT是计数器使能端,高电平有效。A、B、C、D是数据输入端; QA、QB、QC、QD是数据输出端。

图1 74LS161管脚排列图 (二)集成计数器74LS161功能介绍 由表1可知,74LS161具有以下功能: 1.异步清零。当CLR=0时,无论其他各输入端的状态如何,计数器均被直接置“0”。 2.同步预置数。当CLR=1、LOAD=0且在CP上升沿作用时,计数器将ABCD同时置入QA、QB、QC、QD,使QA、QB、QC、QD=ABCD。 3.保持(禁止)。CLR=LOAD=1且ENP、ENT=0时,无论有无CP脉冲作用,计数器都将保持原有的状态不变(停止计数)。 4.计数。CLR=LOAD=ENP=ENT=1时,74LS161处于计数状态。 表1 74LS161功能表

60进制计数器设计

《数字电子技术基础》课程设计任务书 专业:16电气工程及其自动化 班级:专升本二班 学号:160732060 姓名:王冬 指导教师:耿素军 二零一六年十二月二十七日

目录 1、计数器的概述 (3) 2、六十进制计数器 (4) 2.1设计要求 (4) 2.2设计方案框架图 (4) 3、六十进制计数器设计描述 (5) 3.1设计的思路 (5) 3.2设计的实现 (7) 4、六十进制计数器的仿真设计与仿真的结果 (10) 4.1基本电路分析仿真设计 (11) 4.2 计数器电路的仿真的结果 (12) 5、心得体会 (13) 6、参考文献 (13)

1、计数器概述 计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能,计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。 在数字电子技术中应用的最多的时序逻辑电路。计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。但是并无法显示计算结果,一般都是要通过外接LCD或LED屏才能显示。 计数器的种类 1.按照计数器中的触发器是否同时翻转分类,可将计数器分为同步计数器和异步计数器两种。 2.按照计数过程中数字增减分类,又可将计数器分为加法计数器、减法计数器和可逆计数器,随时钟信号不断增加的为加法计数器,不断减少的为减法计数器,可增可减的叫做可逆计数器。

计数进制可变的计数器设计

数字电子技术基础自主实验 班级:1201106 学号:1120110618 姓名: 陈振鑫

姓名班级学号 实验日期节次教师签字成绩 实验名称:计数进制可变的计数器设计 一、实验目的 利用74LS138(3线-8线译码器),74LS253(4选1数据选择器),74LS161(同步十进制加法计数器)三个芯片组合,利用清零法组成模数可以改变的加法计数器。 二、实验设备名称,型号 1.实验电路箱 2.直流稳压电源 3.74LS138、74LS253 、74LS161等芯片 4.导线若干 5.数字万用表 74ls138 74ls161

74ls253 三、实验电路图 四、设计思路及方案 设计思路:将计数器的输出作为译码器的输入端,译码数通过数据选择器,输出低点平,利用同步十进制加法计数器74LS161的清零端将计数器清零。 设计方案:电路图如图上图所示,74LS161计数器输出端QdQcQbQa分别与74LS138的输入端B0B1B2和输入使能端E2(高电平有效)相连,译码器的输出端Y0Y1Y6Y7与四选一数据

选择器输入端相连,输出端与计数器清零端相连。当E3=1,B2B1B0从000到111变化时Y1~Y7分别被选中,当MN分别取00~11时,便可实现改变计数器当进制。 五、实验步骤 1.检查导线通断后按电路图连好电路,QdQcQbQa端接数码显示管,CP端接手动计数脉冲,MN端设为00,检查无误后接通电源; 2.接通电源连续发动计数脉冲至CP端,观察数码显示,使计数器进入主计数循环; 3.按表测量并记录数据; 4.分别设MN=01,10,11,重复上述步骤; 5.分析实验结果。 六、仿真结果

计数器的设计实验报告

计数器的设计实验报告 篇一:计数器实验报告 实验4 计数器及其应用 一、实验目的 1、学习用集成触发器构成计数器的方法 2、掌握中规模集成计数器的使用及功能测试方法二、实验原理 计数器是一个用以实现计数功能的时序部件,它不仅可用来计脉冲数,还常用作数字系统的定时、分频和执行数字运算以及其它特定的逻辑功能。 计数器种类很多。按构成计数器中的各触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器。根据计数制的不同,分为二进制计数器,十进制计数器和任意进制计数器。根据计数的增减趋势,又分为加法、减法和可逆计数器。还有可预置数和可编程序功能计数器等等。目前,无论是TTL还是

CMOS集成电路,都有品种较齐全的中规模集成计数器。使用者只要借助于器件手册提供的功能表和工作波形图以及引出端的排列,就能正确地运用这些器件。 1、中规模十进制计数器 CC40192是同步十进制可逆计数器,具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如图5-9-1所示。 图5- 9-1 CC40192引脚排列及逻辑符号 图中LD—置数端CPU—加计数端CPD —减计数端CO—非同步进位输出端BO—非同步借位输出端 D0、D1、D2、D3 —计数器输入端 Q0、Q1、Q2、Q3 —数据输出端CR—清除端 CC40192的功能如表5-9-1,说明如下:表5-9-1 当清除端CR为高电平“1”时,计数

器直接清零;CR置低电平则执行其它功能。当CR为低电平,置数端LD也为低电平时,数据直接从置数端D0、D1、D2、D3 置入计数器。 当CR为低电平,LD为高电平时,执行计数功能。执行加计数时,减计数端CPD 接高电平,计数脉冲由CPU 输入;在计数脉冲上升沿进行8421 码十进制加法计数。执行减计数时,加计数端CPU接高电平,计数脉冲由减计数端CPD 输入,表5-9-2为8421 码十进制加、减计数器的状态转换表。加法计数表5-9- 减计数 2、计数器的级联使用 一个十进制计数器只能表示0~9十个数,为了扩大计数器范围,常用多个十进制计数器级联使用。 同步计数器往往设有进位(或借位)输出端,故可选用其进位(或借位)输出信号驱动下一级计数器。 图5-9-2是由CC40192利用进位

100进制同步计数器设计

实验名称:100进制同步计数器设计 专业班级:姓名:学号:实验日期: 一、实验目的: 1、掌握计数器的原理及设计方法; 2、设计一个0~100的计数器; 3、利用实验二的七段数码管电路进行显示; 二、实验要求: 1、用VHDL 语言进行描写; 2、有计数显示输出; 3、有清零端和计数使能端; 三、实验结果: 1. VHDL程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; PACKAGE my_pkg IS Component nd2 -- 或门 PORT (a,b: IN STD_LOGIC; c: OUT STD_LOGIC); END Component; Component led_decoder PORT (din:in std_logic_vector(3 downto 0 ); --四位二进制码输入 seg:out std_logic_vector(6 downto 0) ); --输出LED七段码 END Component; 1

Component CNT60 --2位BCD码60进制计数器 PORT ( CR:IN STD_LOGIC; EN:IN STD_LOGIC; CLK:IN STD_LOGIC; OUTLOW:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); OUTHIGH:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ); END Component; Component CNT100 --带使能和清零信号的100进制计数器PORT ( CLK:IN STD_LOGIC; EN:IN STD_LOGIC; CLR:IN STD_LOGIC; OUTLOW:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); OUTHIGH:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ); END Component; Component freq_div --50MHZ时钟分频出1Hz PORT ( clkinput : IN STD_LOGIC; output : OUT STD_LOGIC ); END Component;

24进制计数器设计报告.doc

24进制计数器设计报告 单时钟同步24进制计数器课程设计报告1.设计任务1.1设计目的1.了解计数器的组成及工作原理。 2.进一步掌握计数器的设计方法和计数器相互级联的方法。 3.进一步掌握各芯片的逻辑功能及使用方法。 4.进一步掌握数字系统的制作和布线方法。 5.熟悉集成电路的引脚安排。 1.2设计指标1.以24为一个周期,且具有自动清零功能。 2.能显示当前计数状态。 1.3设计要求1.画出总体设计框图,以说明计数器由哪些相对独立的功能模块组成,标出各个模块之间互相联系,时钟信号传输路径、方向。 并以文字对原理作辅助说明。 2.设计各个功能模块的电路图,加上原理说明。 3.选择合适的元器件,利用multisim仿真软件验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在确定电路充分正确性同时,输入信号和输出方式要便于电路的测试和故障排除。 4.在验证各个功能模块基础上,对整个电路的元器件和布线进行合理布局。 5.打印PCB板,腐蚀,钻孔,插元器件,焊接再就对整个计数器电路进行调试。

2.设计思路与总体框图.计数器由计数器、译码器、显示器三部分电路组成,再由555定时器组成的多谐振荡器来产生方波,充当计数脉冲来作为计数器的时钟信号,计数结果通过译码器显示。 图1所示为计数器的一般结构框图。 十位数码显示管译码驱动异步清零计数器计数脉冲(由555电路产生)个位位数码示像管译码驱动异步清零计数器强制清零▲图1计数器结构框图3.系统硬件电路的设计3.1555多谐荡电路555多谐振荡电路由NE555P芯片、电阻和电容组成。 由NE555P的3脚输出方波。 ▲图2555电路3.2计数器电路集成计数芯片一般都设置有清零输入端和置数输入端,而且无论是清零还是置数都有同步和异步之分。 有的集成计数器采用同步方式,即当CP触发沿到来时才能完成清零或置数任务;有的集成计数器则采用异步方式,即通过触发器的异步输入端来直接实现清零或置数,与CP信号无关。 本设计采用异步清零。 由2片十进制同步加法计数器74LS160(图2-1-1)、一片与非门74LS00(图2-1-2)和相应的电阻、开关。 由外加送来的计数脉冲(由555电路产生)送入两个计数器的CLK端,电路在计数脉冲的作用下按二进制自然序依次递增1,当个位计数到9时,输出进位信号给十位充当使能信号进位。

100进制计数器设计报告

100进制计数器设计报告

一、设计要求 1)设计的电路可以实现预置数,实现0~9的预置,并在七段字符显示电路上显示相应的0~9。 2)同时可完成100进制的计数,并从任意100以内数开始,要求计数器为同步计数,数码管以十进制的方式显示。 3)该电路的脉冲采用555定时器来实现,要求其频率f=1HZ 。 根据555定时器产生多谐波振荡器的频率f= 1.44()2A B C R R + =1HZ 10C F μ= 1442A B K R R ∴+=Ω 50,50A B K K R R =Ω=Ω取可调的电阻 三 、元件清单 2个74LS48, 1个74LS04反相器 2个74LS160, 1个74LS147, 1个555定时器,, 9个按键开关,2个自锁开关, 2个七段数码显示电路(共阴极) 2个10μF 的电容,导线若干电阻1K Ω的13个,1个50K Ω的电阻,1个50K Ω的可调电阻,

四、安装调试过程中遇到的问题与解决方法 在首次完成电路的焊接后,接上电源,经调试,发现七段数码管显示有误,重新查找资料发现七段数码管管脚连接有误,重新修改好再试,成功实现了数码显示。此外,后期调试发现,4与5在置数时,显示不正常,检查电路发现在74ls147的1、2管脚存在短路现象,经修改后重新接上电路,再次调试,发现该电路所需功能均已实现。 五、心得体会 通过本次实验,进一步加深了对74LS48,74LS04,74LS160,74LS147的逻辑功能的理解,并且对555定时电路的原理以及应用有了更为深刻的认识。在动手焊接电路时,无形中加深了自己的动手能力,在调试过程中培养了自我总结,发现问题解决问题的能力。

七进制加法计数器电路设计

信 息 工 程 分 院 课题名称:集成计数器及其应用 班级:14电子信息工程技术1班 学生姓名:邱荣荣 学 号: 18 指导教师:王连英 完成时间:2015年5月19日 设 计 报 告

七进制计数器电路设计 1.设计要求 a.分别采用反馈清零和反馈置数的方法 b.用同步十进制加法计数器74LS160(或同步4位二进制加法计数器74LS161)、三3输入与非门74LS10、4511、共阴七段数码LED 显示器设计七进制计数器。 2.设计原理 a.使用4位同步二进制计时器74LS161设计反馈清零加法计数器 由74LS160是模16加法计数器、M=16,要设计制作的是七进制加法计数器、N=7,M>N ,需一块74LS161,且74LS161具有异步清零(低电平有效)功能。 从初始状态开始,七进制加法计数器的有效循环状态:0000、0001、0010、0011、0100、0101、0110等七个。其最后一个,在下一个状态所对应的数码是:0111。所以,异步清零的反馈数210)0110()7(===N S N 。利用74LS161的异步清零(低电平有效)功能有,反馈数012Q Q Q CR =。据此有反馈清零法,由74LS161七进制加法计数器循环转换状态换图2.1.1所示,仿真电路如图2.1.2所示。 2.1.1 反馈清零七进制加法计数器循环转状态换图

b.使用4位同步二进制计时器74LS161设计反馈置数加法计数器 对于74LS161而言,取七进制加法计数器的有效循环状态,是使用74LS161十个有效状态中任意连续的七个,例如是:0010、0011、0100、0101、0110、0111、1000。设预置数输入端0123D D D D 则对应的预置数码0123d d d d 为0010,则从0010开始,其最后一个循环状态所对应的数码是:1000,所以此时,同步置数的反馈数2)1000(=S 。有,3Q LD =。 据此有,74LS160反馈置数法设计七进制加法计数器循环转换状态换图2.2.1所示,仿真电路如图2.2.2所示。———实验证据如图00所示 图2.1.2 反馈清零法七进制加法计数器仿真电路 2.2.1 反馈置数七进制加法计数器循环转状态换图

verilog程序-60进制计数器

module count60_dongtai_LED ( input clk, input rest_n, output reg [2:0] sel, //位选 output reg [6:0] display ); reg [15:0] count_clk; // 分频计数器,最大2^16=64K分频 reg [5:0] sum_num; //计数缓存器,2^6=64 reg [3:0] g_bit; //个位 reg [3:0] s_bit; //十位 reg [3:0] disp_temp; //分频 always @ (posedge clk or negedge rest_n) begin if(rest_n ==0) begin count_clk=16'b0; end else begin if(count_clk==16'hffff) begin count_clk=16'b0; end else begin count_clk=count_clk+1'b1; end end end // 60进制计数 always @ (negedge count_clk[3] or negedge rest_n) begin // clk_clk[3] 对"clk" 16分频if(rest_n ==0) begin g_bit=4'b0; s_bit=4'b0; sum_num=6'b0; end else begin if (sum_num==6'd59) begin sum_num=6'b0; end else begin sum_num=sum_num+1'b1; end end s_bit=(sum_num/10)%10;

100进制计数器报告

南京信息工程大学 数字逻辑实验报告 姓名:尤天羽 院(系):电子与信息工程学院 专业:电子信息工程 学号:20111305046 指导教师:裴晓芳 南京信息工程大学电子与信息工程学院 2011-06-04 基于TTL芯片74LS163 设计模为100的计数器 一、引言 基于TTL芯片74LS163,利用芯片级联设计并实现一个100进制计数器的逻辑功能,通过电路的仿真和数电实验想进行硬件验证,进一步了解

计数器的特性和功能。 二、电路设计和分析 2.1理论分析 获取100进制计数器的常用的方法有两种:一是用时钟触发器和门电路进行设计;二是用集成计数器构成。本题制定用集成芯片74LS163来实现功能,故选用方案二。由于集成计数器是产家生产的定型产品,其函数关系已被固化在芯片中,状态分配即编码是不能更改的,而且多为纯自然态序编码,因此仅是利用清零端或置数端控制,让电路跳过某些状态而获得100进制计数器。从74LS163的状态表可知(如图一所示),74LS163的清零和置数均采用同步方式。 本次试验的主要设计理念为:采用数码管显示计数数值,个位显示到9时,下一个上升沿到来时,个位清零,同时向十位进位;同理显示结果为99时,下一个上升沿到来,则归零,继续开始下一轮计数。 2.2主要步骤 1、写出状态{EMBED Equation.KSEE3 \* MERGEFORMAT | S的 N 1 二进制代码 = = = 1001 2、求归零逻辑 = = 3、进位设计 由于74LS163是十六进制计数器,即计满16个数才能使进位端CO 有效,而本题计满10个数就要进位,所以要给CO一个特定的脉冲,给清零端的脉冲正好能满足这个要求。即当=1001时,CO得到一个下降沿,=1010时,CO得到一个上升沿,使进位端有效,与此同时,清零端也有效,完美的实现了清零和进位,比如从29到30。 4、电路仿真 如图二所示 74LS163功能真值表 输入输出 CP CO

同步七进制加法计数器数字电子技能

目 录 1 课程设计的目的............................................................12 计数器设计的总体框图......................................................13 计数器设计过程 (1) 3.1根据题意可画出该计数器状态图:.......................................13.2选择触发器,求时钟方程,画出卡诺图:.................................13.3根据卡诺图写出状态方程:.............................................33.4求驱动方程:.........................................................33.5检查电路能否自启动:.................................................44 173进制加法计数器 (4) 4.1写出和的二进制代码.............................................41 N S N S 5 设计的逻辑电路图. (4) 5.1同步七进制加法计数器.................................................45.2 173进制加法计数器...................................................56 设计的芯片原理图..........................................................66 实验仪器..................................................................77 总结与体会. (7) 参考文献 (8)

verilog实验60进制计数器

module counter60(clk_in,clkout,rst,out); input clk_in,rst; output [6:0] out; output clkout; reg [6:0] out1; reg [6:0] out2; reg [3:0] cnth; reg [3:0] cntl; reg [7:0] cnt; always @(posedge clk_in) begin if(!rst) cnt<=8'd0; else cnt<=cnt+8'd1; end assign clkout=cnt[4]; always @(posedge clkout or negedge rst) begin if(!rst) {cnth,cntl}<=8'd0; else if(cnth==5&&cntl==9) {cnth,cntl}<=8'd0; else if(cntl==4'd9) begin cntl<=4'd0; cnth<=cnth+4'd1; end else cntl<=cntl+4'd1; end always @(cnth) begin case(cnth) 4'd0:out1=7'b011_1111;//0 4'd1:out1=7'b000_0110;//1 4'd2:out1=7'b101_1011;//2 4'd3:out1=7'b100_1111;//3 4'd4:out1=7'b110_0110;//4 4'd5:out1=7'b110_1101;//5 default:out1=7'b011_1111;//0 endcase end

60进制计数器1

《可编程器件原理与应用》 实训报告书 二〇〇九年十二月 目录 前言 第一章VHDL语言介绍 1.1VHDL的发展史

1.2VHDL的特点 第二章六十进制计数器的设计与仿真 2.1六十进制计数器源程序 2.2运用软件设计过程 2.3时序仿真 体会 致谢 参考文献 前言 本项实验通过六十进制计数器的设计与仿真,学习VHDL语言及VHDL文本输入设计方法,编写六十进制计数器源程序,应用MAX+PlusII软件进VHDL 文本输入设计与波形仿真。写出源程序,并写出设计与仿真过程。

第一章VHDL语言介绍 1.1VHDL发展史 硬件描述语言(hardware description language,HDL)是电子系统硬件行为描述,结构描述,数据流描述的语言.目前,利用硬件描述语言可以进行数字电子系统的设计.随着研究的深入,利用硬件描述语言进行模拟电子系统设计或混合电子系统设计也正在探索中.国外硬件描述语言种类很多,有的从Pascal发展而来,也有一些从C语言发展而来.有些HDL成为IEEE标准,但大部分是企业标准.VHDL来源于美国军方,其他的硬件描述语言则多来源于民间公司.可谓百家 争鸣,百花齐放.这些不同的语言传播到国内,同样也引起了不同的影响.在我国比较有影响的有两种硬件描述语言:VHDL语言和Verilog HDL语言.这两种语言已成为IEEE标准语言. 电子设计自动化(electronic design automation,EDA)技术的理论基础,设计工具,设计器件应是这样的关系:设计师用硬件描述语言HDL描绘出硬件的结构或硬件的行为,再用设计工具将这些描述综合映射成与半导体工艺有关的硬件配置文件,半导体器件FPGA则是这些硬件配置文件的载体.当这些FPGA器件加载,配置上不同的文件时,这个器件便具有了相应的功能.在这一系列的设计,综合,仿真,验证,配置的过程中,现代电子设计理论和现代电子设计方法贯穿于其中. 以HDL语言表达设计意图,以FPGA作为硬件实现载体,以计算机为设计开发工具,以EDA软件为开发环境的现代电子设计方法日趋成熟.在这里,笔者认为,要振兴我国电子产业,需要各相关专业的人士共同努力.HDL语言的语法语义学 研究与半导体工艺相关联的编译映射关系的研究,深亚微米半导体工艺与EDA设计工具的仿真,验证及方法的研究,这需要半导体专家和操作系统专家共同努力,以便能开发出更加先进的EDA工具软件.软件,硬件协同开发缩短了电子设计周期,加速了电子产品更新换代的步伐.毫不夸张地说,EDA工程是电子产业的心脏起搏器,是电子产业飞速发展的原动力.本书从应用的角度向国内广大读者介绍

数字式100进制加减计数电路的工作原理及制作

数字式100进制加减计数电路的工作原理及制作 工作原理 1、振荡与分频:晶振X1与集成电路ICl(4060)内部的非门电路共同产生32768Hz的方波信号,经IC1进行214分频后由IC1的13脚输出频率为2Hz的方波信号,再经IC2(集成触发器74LS73)分频一次,输出1Hz的方波信号作为计数器的计数脉冲,送入到个位计数器IC4进行计数。 振荡电路中的R1为反馈电阻;其数值较大(10MΩ)有利于提高振荡频率的稳定性。电容C1、C2与晶体构成一个谐振型网络,实现对振荡频率的控制,同时提供180度相移,从而和IC1内部的非门构成一个正反馈网络满足振荡条件,使振荡电路正常电工作。 2、计数:计数电路由二块74LS190(IC4、IC5)构成个位和十位的计数。 IC4的13脚为进位输出端/借位输出端)与IC5的14脚(计数脉冲输入端)相连,完成个位向十位进位或借位的功能。 3、译码与显示:该部分电路由两块74LS48(IC6、IC7)和两个数码管组成,IC6对个位计数电路输出的8421BCD码进行译码驱动,数码管显示,IC7对十位计数电路输出8421BCD码进行译码驱动,数码管显示。 4、控制电路:主要由三个按钮SB1、SB2、SB3和一块双JK触发器74LS73构成。 ①加法计数控制:接通电源的瞬间,由于电容C4两端的电压不能突变而为0,故IC3A、IC3B的CLR=O,故两触发器清零,即1Q=2Q=O,1Q=2Q=1,2Q=0送到IC2的CLR端,使其清零,此时IC2无计数脉冲输出到计数器74LS190,又因IC3B的Q(的反)=1,该信号送到74LS190的使能控制端(CTEN),则计数器工作在保持状态,故开机后,数码显示不变。再按一次SB2,IC4、IC5的LOAD变为低水平,使IC4、IC5处于并行输入状态,同时因A=D=U/D=0,B=C=0,故IC4、IC5的QA=QB=QC=QD=0,故显示为00(置0),再按一次SB3(启动)使IC3B获得一个下降脉冲,则IC3B输出从O翻转为1,使IC2输出计数脉冲,送至IC4,同时因IC3B的Q(的反)转为0,则IC4、IC5的CTEN=0,此时虽然C4充电后变为高电平,但IC3A无下降脉冲触、发,故其Q保持为0,则U/D=0,

实验7 74ls160组成n进制计数器

实验7 74ls160组成n进制计数器 一、实验内容 1.掌握集成计数器的功能测试及应用 2.用异步清零端设计6进制计数器,显示选用数码管完成。 3.用同步置0设计7进制计数器,显示选用数码管完成。 二、演示电路 74LS160十进制计数器连线图如图1所示。 图1 74LS160十进制计数器连线图 74161的功能表 如表1所示。由表1可知,74161具有以 下功能: ①异步清 零 当CR(C L R’)=0时,不管其他输入端的状态如何(包括时钟信号C P),计数器输出将被直接置 零,称为异步清零。

②同步并 行预置数 在CR=1的条件下,当 LD(L O A D’)=0、且有时 钟脉冲C P的上升沿 作用时,D0、D1、D2、D3输入端的数据将 分别被Q0~Q3所接 收。由于这个置数操 作要与C P上升沿同步,且D0、D1、D2、 D3的数据同时置入计 数器,所以称为同步 并行置数。 ③保持 在CR=LD=1的条件 下,当E N T=E N P=0,即 两个计数使能端中有 0时,不管有无C P脉 冲作用,计数器都将 保持原有状态不变 (停止计数)。需要说 明的是,当E N P=0, E N T=1时,进位输出C 也保持不变;而当 E N T=0时,不管E N P 状态如何,进位输出 R C O=0。

④计数 当 CR=LD=E N P=E N T=1时, 74161处于计数状态, 电路从0000状态开 始,连续输入16个计 数脉冲后,电路将从 1111状态返回到0000 状态,R C O端从高电 平跳变至低电平。可 以利用R C O端输出的 高电平或下降沿作为 进位输出信号。 连上十进制加法计数器160,电路如图1所示,给2管脚加矩形波,看数码管显示结果,并记录显示结果。 三、用160和与非门组成6进制加法计数器-用异步清零端设计 74160从0000状 态开始计数,当输入 第6个C P脉冲(上

VHDL语音60进制计数器

《EDA技术》课程实验报告 学生姓名:郑月庭 所在班级:电信1001 指导教师:高金定老师 记分及评价: 项目满分5分 得分 一、实验名称 60进制计数器设计 二、任务及要求 【基本部分】4分 1、在QuartusII平台上,采用文本输入设计方法,通过编写VHDL语言程序,完成60进制计数器的设计并进行时序仿真。 2、设计完成后生成一个元件,以供更高层次的设计调用。 3、实验箱上选择恰当的模式进行验证,目标芯片为ACEX1K系列EP1K30TC144-3。 【发挥部分】1分 在60进制基础上设计6进制计数器,完成时序仿真。 三、实验程序 Library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; Entity j602 Is port (clk:in std_logic; ent:in std_logic; rst:in std_logic; y0: out std_logic_vector(3 downto 0); y1: out std_logic_vector(3 downto 0); cout: out std_logic); End j602; Architecture j602 of j602 is signal cnt0 :std_logic_vector(3 downto 0); signal cnt1 :std_logic_vector(3 downto 0); Begin

cout<='1' when (cnt1="0101" and cnt0="1001" and ent = '1') else '0'; process(clk,rst) Begin If rst ='0' Then cnt0<="0000"; cnt1<="0000"; elsif clk'event and clk='1' Then if ent = '1' Then if cnt0="1001" Then cnt0<="0000"; if cnt1="0101" Then cnt1<="0000"; else cnt1<=cnt1+1; end if; else cnt0<=cnt0+1; end if; end if; end if; end process; y0<=cnt0; y1<=cnt1; end j602; 四、仿真及结果分析 五、硬件验证 1、选择模式:模式5 六、小结 通过这次实验,使我明白了用VHDL语言编程和用设计原理图实现同样功能器件的区别,从而加深的对EDA的理解。

计数器及数码显示实验报告

北华航天工业学院 课程设计报告(论文) 课设名称: EDA技术与应用 设计课题:计数器及数码显示综合设计 专业班级: B12241 学生姓名:白冬雪田尉均 指导教师:齐建玲 设计时间: 2014年 12月 15日

北华航天工业学院电子工程系 EDA 课程设计任务书 姓名:白冬雪田 尉均 专业: 测控技术与 仪器 班级:B12241 指导教师:齐建玲职称:教授 课程设计题目:计数器及数码显示综合设计 已知技术参数和设计要求: ①总体设计要求:设计一个能在7段数码管上动态刷新显示十进制、十二进制、六十进制、四位二进制计数器计数结果的VHDL语言程序并在EDA实验开发系统上实现该功能。 ②技术要点:VHDL语言编辑程序、共阴7段数码管及FPGA可编程芯片的工作原理与连线。 所需仪器设备:实验箱,电脑 成果验收形式:实验报告,硬件实验结果 参考文献: 李国洪、胡辉、沈明山等编著《EDA技术与实验》—机械工业出版社出版。 时间安排 2014年12月14日-15日编辑VHDL语言程序 2014年12月16日硬件调试程序 2014年12月17日实验箱答辩验收 指导教师:齐建玲教研室主任:王晓 2014年 12月 17日

内容摘要 用VHDL语言在MAX+PLUS2环境下 设计一个带使能输入、进位输出及同步清零的十进制计数器。 设计一个带使能输入及同步清零的十二进制计数器。 设计一个带使能输入及同步清零的六十进制加法计数器。 设计一个四位二进制可逆计数器。 设计一个共阴7段数码管控制接口,在时钟信号的控制下,使六位数码管动态刷新显示上述计数器的计数结果。 最后在EDA实验开发系统实验操作。

10进制和60进制计数器

十进制计数器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10IS PORT(CLK,RST,EN:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3DOWNTO 0); COUT:OUT STD_LOGIC); END CNT10; ARCHITECTURE behav OF CNT10IS BEGIN PROCESS(CLK,RST,EN) VARIABLE CQI: STD_LOGIC_VECTOR(3DOWNTO0); BEGIN IF RST='1'THEN CQI:=(OTHERS =>'0');--计数 ELSIF CLK'EVENT AND CLK='1'THEN IF EN='1'THEN IF CQI<9THEN CQI:=CQI+1; --允许计数, ELSE CQI:=(OTHERS=>'0'); --大于9, END IF; END IF; END IF; IF CQI=9THEN COUT<='1';--计数大于9,输出进位信号 ELSE COUT<='0'; END IF; CQ<=CQI;--将计数值向端口输出 END PROCESS; END behav;六十进制计数器源程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt60is port(clk,rst,en:in std_logic; cq:out std_logic_vector(7downto0); cout:out std_logic); end cnt60; architecture behav of cnt60is begin process(clk,rst,en) variable cqi:std_logic_vector(7downto0); begin if rst='1'then cqi:=(others=>'0'); elsif clk'event and clk='1'then if en='1'then if cqi<59then cqi:=cqi+1; else cqi:=(others=>'0'); end if; end if; end if; if cqi=59then cout<='1'; else cout<='0'; end if; cq<=cqi; end process; end behav;

100进制计数器

实验课程:EDA 实验 实验地点:第五实验室 实验时间:2012/11/12 班级:通信103班 学号: 102193 姓名:杨险峰 100进制计数器 一、实验目的: 1、设计一个100进制计数器; 2、掌握ISE 软件的综合与设计实现流程; 3、掌握采用ISE 软件进行FPGA 开发的过程以及试验箱的使用方法; 4、了解对设计电路进行功耗分析的方法; 5、了解ISE 软件设计报告中电路资源利用率情况分析; 6、掌握使用VHDL 创建测试文件的方法。 二、实验步骤: 1、启动ISE 集成开发环境,新建一个工程; 2、为工程添加设计源文件; 3、对源文件进行语法检查,并改正错误之处; 4、对设计进行时序仿真,分析设计的正确性; 5、锁定引脚,完成设计实现过程,并在试验箱上连线,利用iMPACT 进行程序下载; 6、在试验箱上验证计数器的功能,观察并记录实验结果; 7、打开report 文件查看资源利用率的情况; 三、实验原理: 输入时钟信号,输出接七段数码管的段码,数码管原理图如下: 四、实验代码: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_unsigned.ALL; entity counter100 is port(clk1,clk2:in std_logic; y:out std_logic_vector(6 downto 0); Y0 Y1 Y2 Y3 Y4 Y5 Y6 EN clr en clk Vcc

swgw:out std_logic_vector(1 downto 0)); end counter100; architecture Behavioral of counter100 is signal xy:std_logic_vector(1 downto 0); signal gw:std_logic_vector(3 downto 0) :="0000"; signal sw:std_logic_vector(3 downto 0); signal w:std_logic_vector(3 downto 0); signal led:std_logic_vector(6 downto 0); begin swgw<=xy; y<=led; process(clk1) begin if(clk1='1') then xy<="01"; else xy<="10"; end if; end process; process(clk2) begin if(clk2' event and clk2='1') then if(gw="1001") then gw<="0000"; else gw<=gw+'1'; end if; end if; end process; process(clk2) begin if(clk2' event and clk2='1') then if(gw="1001") then if(sw="1001") then sw<="0000"; else sw<=sw+'1'; end if; end if; end if;

相关主题
文本预览
相关文档 最新文档