用JKFF触发器设计一个模为4的加法计数器
- 格式:docx
- 大小:35.48 KB
- 文档页数:4
单片机汇编4位有符号位加法首先,我们需要了解有符号位加法的基本原理。
在计算机中,有符号数通常使用补码表示。
补码是一种能够同时表示负数和正数的编码方式,其计算方式如下:- 对于正数,其补码和原码相同;- 对于负数,其补码是其绝对值的原码取反后加1。
在单片机中,我们可以利用这种补码表示的特性来实现有符号位加法。
下面将介绍一种基于补码的有符号位加法实现算法。
首先,我们需要准备两个有符号数,分别表示为A和B。
这两个有符号数以补码的形式存储在内存中。
我们首先需要将这两个有符号数加载到通用寄存器中,以便进行加法运算。
接下来,我们使用通用寄存器进行加法运算。
在单片机汇编中,通用寄存器可以直接执行加法指令,因此我们不需要额外的算法实现来进行加法运算。
在加法运算完成后,我们得到了两个有符号数的和,存储在通用寄存器中。
接着,我们需要检查加法结果是否溢出。
在有符号位加法中,溢出是一个很重要的问题。
当两个有符号数相加时,可能会产生溢出,导致结果不准确。
在单片机汇编中,我们可以通过检查进位和溢出标志位来判断是否发生了溢出。
如果发生溢出,我们需要进行相应的处理,例如输出错误信息或者进行溢出处理。
最后,我们将加法结果存储回内存中,以便后续程序使用。
在存储结果时,需要注意将补码转换回原码,以确保结果的正确性。
在实际开发中,有符号位加法的实现还可能涉及其他问题,如数据类型转换、数据对齐、运算精度等。
针对这些问题,我们需要设计合理的算法和代码实现来保证程序的正确性和效率。
综上所述,实现单片机汇编4位有符号位加法需要一定的算法设计和代码实现。
只有通过合理的结构设计和精确的算法实现,才能确保有符号位加法的准确性和可靠性。
在实际开发中,我们需要充分了解有符号数的特性和补码表示法,以确保实现的正确性和稳定性。
题目:用JKFF 设计模为8的加法计数器步骤1: 分析题意 根据题目所给的条件,待设计的计数器默认为模为8的加法器,不需要求加载初值。
电路只需要故电路只需时钟输入端clk ,clk 作为电路的同步时钟,不必当做输入变量对待;输出一个8进制数要3个输出端,记为0Q 1Q 2Q 。
要有输出信号Y ,故共需要3个输出端。
因输出量0Q 1Q 2Q 就是计数值,故采用Moore 型电路较为合适。
步骤2:建立原始状态图 模8加法器要求逢8加1,。
有此状态图做出如图所示。
需要8个状态故不需要化简。
/Y /0 /0 /0S0→S1→S2→S3 ↑/1 ↓/0 S7←S6←S5←S4/0 /0 /0步骤3:状态分配。
由于最大模的值为8,因此必须取代码位数n=3。
假设S0=000,S1=001,S2=010,S3=011,S4=100,S5=101,S6=110,S7=111.则可以做出状态转移表如图。
步骤4:选触发器,求时钟、输出、状态、驱动方程。
因需要3位二进制代码,选用三个CP 下降沿出发的J-K 触发器,分别用FF0,FF1,FF2表示。
有状态列表可作出次态卡诺图及输出函数的卡诺图,如图所示。
与J-K 触发器的特性方程nn n QK Q J Q+=+1比较得到驱动方程输入 现态 次态输 出CP Q2 Q1 Q0 12+n Q11+n Q1+n QY 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 2 0 1 0 0 1 1 0 3 0 1 1 1 0 0 0 4 1 0 0 1 0 1 0 5 1 0 1 1 1 0 0 6 1 1 0 1 1 1 0 71111nn Q Q 01=+10=J 10=Knn n n n Q Q Q Q Q 101011+=+ nQ J 01=nQ K 01=nn n n n n n n Q Q Q Q Q Q Q Q 122012012++=+nn n Q Q Q Y 210=nnQ Q K J 1022==步骤5:画出逻辑电路图nQ 0nnQ Q 1200 01 11 100 1 1 1 1 1nQ 0nnQ Q 1200 01 11 100 0 1 1 0 11nQ 0nn Q Q 120001 11100 0 0 1 1111nQ 0nnQ Q 12000111100 0 0 0 0 11。
福建农林大学金山学院课程设计报告课程名称:数字逻辑课程设计题目:用JK触发器和门电路设计一个4位格雷码计数器姓名:系:专业:年级:学号:指导教师:职称:2011年6 月29 日用JK触发器和门电路设计一个4位格雷码计数器一、实验目的1、用JK触发器和门电路设计一个4位格雷码计数器。
2、加强对格雷码的认识。
3、熟悉对JK触发器的使用。
4、利用仿真软件Multisim11.0对数字电路进行仿真和实现。
二、仿真软件Multisim介绍(注:因为本课程设计用的是2011年的版本,所以对此进行简单的介绍)⑴仿真软件Multisim11.0:NI Multisim软件是一个专门用于电子电路仿真与设计的EDA工具软件。
作为 Windows 下运行的个人桌面电子设计工具,NI Multisim 是一个完整的集成化设计环境。
NI Multisim计算机仿真与虚拟仪器技术可以很好地解决理论教学与实际动手实验相脱节的这一问题。
学员可以很方便地把刚刚学到的理论知识用计算机仿真真实的再现出来,并且可以用虚拟仪器技术创造出真正属于自己的仪表。
NI Multisim软件绝对是电子学教学的首选软件工具。
⑵特点:①直观的图形界面。
②丰富的元器件。
③强大的仿真能力。
④丰富的测试仪器。
⑤完备的分析手段。
⑥独特的射频(RF)模块。
⑦强大的MCU模块。
⑧完善的后处理。
⑨详细的报告。
⑩兼容性好的信息转换。
三、实验步骤(包括设计过程、仿真结果和结果分析)⒈设计过程6 0 1 0 1 07 0 1 0 0 08 1 1 0 0 09 1 1 0 1 0 10 1 1 1 1 0 11 1 1 1 0 0 12 1 0 1 0 0 13 1 0 1 1 0 14 1 0 0 1 0 15 1 0 0 0 1 16 0 0 0 0 0② 按状态转换表的计数顺序可得****3210Q Q Q Q 的卡诺图:从而分别得出*3Q 、*2Q 、*1Q 、*0Q 、C 的卡诺图:③ 由卡诺图得出状态方程和输出方程:*''''''''3313021021032103()()'Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q =++=+ |*''''''2212031031023102()()'Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q =++=+*'''11032032023010321(()')(())'Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q =++=⊕+⊕*'''''''032132132132132103210()'()'Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q =+++=⊕⊕+⊕⊕'''3210C Q Q Q Q =④ 又JK 触发器的特性方程为:*''Q JQ K Q =+,所以可得驱动方程:''3210J Q Q Q =,'''3210K Q Q Q = ''2310J Q Q Q =,'2310K Q Q Q =1320()'J Q Q Q =⊕,1320()K Q Q Q =⊕ 0321()'J Q Q Q =⊕⊕,0321K Q Q Q =⊕⊕⑤ 由驱动方程可画出逻辑电路图:⒉仿真结果①原理图如下:②部分波形图如下:⑴0000~1101⑵1101~0011③电路状态变化如下:⑴32100000Q Q Q Q=,0C=⑵32100001Q Q Q Q=,0C=⑶32100011Q Q Q Q=,0C=3210⑸32100110Q Q Q Q=,0C=⑹32100111Q Q Q Q=,0C=3210⑻32100100Q Q Q Q=,0C=⑼32101100Q Q Q Q=,0C=3210⑾32101111Q Q Q Q=,0C=⑿32101110Q Q Q Q=,0C=3210⒁32101011Q Q Q Q=,0C=⒂32101001Q Q Q Q=,0C=. '. ⒃32101000Q Q Q Q =,1C =⒊结果分析当3Q 、2Q 、1Q 、0Q 从00001000:完成一个循环时,进位输出C 才为1,其他情况都为0,符合题意要求。
学院:专业:班级设计原理框图从原理图中可见,需要有1bit装载位〔load〕、1bit清零位〔clr〕、方向控制位up_down和4bit数据选择位DIN[3..0]。
装载位我们采用SW0,清零位采用SW1,方向控制位为SW2。
SW3-SW6作为数据输入端,LED1-LED4显示数据的输出,LED5为溢出标志位。
实验内容编写一个带预置输入,清零输入,可加可减计数器的verilog代码或VHDL代码并仿真,编译下载验证module counter4(load,clr,c,DOUT,clk,up_down,DIN);//定义模块input load;input clk;//wire load;//定义线网型input clr;//wire clr;//input up_down;//wire up_down;//input [3:0]DIN;wire [3:0]DIN;output c;reg c;output [3:0]DOUT;//wire [3:0]DOUT;reg [3:0]data_r;assign DOUT=data_r;always@(posedge clk or posedge clr or posedge load)//检测clk,clr,load的上升沿beginif(clr)//当clr=1的时候进行下面的运行程序data_r<=0;//将data_r置零else if(load) //当load=1的时候进行下面的运行程序data_r<=DIN;//将DIN的值赋给data_relse begin if(up_down)//load=0的时候进行下面的操作beginif(data_r==4'b1111)begin///当data_r==4'b1111的时候进行下面的运行程序data_r<=4'b0000;c=1;endelse begin//当data_r不等于4'b1111的时候进行下面的运行程序data_r<=data_r+1;//进行加法计数c=0;endendelsebeginif(data_r==4'b0000)begin//当data_r==4'b0000的时候进行下面的运行程序data_r<=4'b1111;c=1;endelse begin//当data_r不等于4'b1111的时候进行下面的运行程序data_r<=data_r-1;//进行减法计数c=0;endendendendendmodule//结束模块实验数据注:各学院可根据教学需要对以上栏木进行增减。
四位二进制加法计数器设计报告一、计数器简介计数器是最常用的时序电路之一,可用来计数、分频、定时、产生节拍脉冲以及其他时序信号。
计数器分类有很多,按触发器动作可分为同步计数器和异步计数器;按计数数值增减可分为加计数器、减计数器和可逆计数器;按编码可分为二进制计数器、BCD码计数器、循环码计数器。
本次设计的是四位异步二进制加法计数器。
二、设计构思四位异步二进制计数器逻辑图如上,它由4个T触发器组成。
计数脉冲CP加至时钟脉冲输入端,每输入一个计数脉冲,U1将翻转一次。
U2、U3和U4都以前级触发器的/Q端输出作为触发信号,当Q0端由1变成0时,即/Q0由0变成1时,U1翻转,其余类推。
/R端是用来清零端,只能全部置0,/S端是用来置1端,只能全部置1。
三、实现构思并用Workveiw仿真1、T触发器的实现本次设计是通过D触发器来构成T触发器,即将D触发器的/Q 端与D端相连即可,下面是D触发器的设计与仿真以及元件模块的制作:a 、D 触发器的逻辑图如下图,引脚/SD 可以直接置1,而引脚/RD 可以直接置0,时钟触发端为CP,有正反两个输出端Q 与/Q,这种触发器在工作中具有维持、阻塞特性,所以称之为维持阻塞触发器。
b 、下面进行D 触发器电路仿真,根据仿真波形可知该D 触发器满足特性表 n Q D1n +Q n Q D 1n +Q 0 00 1 0 0 0 11 1 11仿真截图如下:c、D触发器元件制作截图2、四位二进制异步加法计数器的实现首先是将每个D触发器的/Q端与D端相连,构成T触发器,然后按照先前的构思连接电路,加法计数器的计数脉冲输入端为CP,全部清0端为/R,全部置1端为/S,输出端由低位到高为分别为Q0、Q1、Q2、Q3。
其电路截图如下:下面进行计数器的逻辑仿真,CP输入单位时间脉冲,/R在第一个时钟脉冲置0,其余以后的时钟周期都置1,/S在所有的时钟周期内都置1,然后,进行逻辑仿真。
Lab 4&5 模4递增计数器7th1.实验目的了解D、JK触发器在数字电路中的具体应用,掌握设计电路时的结构化思想,进一步熟悉Altera DE0板的操作和FPGA的I/O控制及引脚分配。
2.实验内容●使用Verilog语言实现模4递增计数器●使用基本D触发器或者基本JK触发器作为模块单元●在Quartus中仿真波形●将代码下载至DE0开发板内,观察实验结果3.代码分析1)我们使用了2个D触发器作为模块单元,利用D触发器两次翻转为一个周期从而让周期翻倍使周期由1变为4,同时利用一个将内部50MHz的时钟变为1Hz的代码使其能够以4秒为一个周期,以实现模4计数器的功能。
代码将分为4个模块:主模块、D触发器模块、时钟转换模块、输出控制模块。
图 3.1 代码框架2)主模块中首先定义了本次实验的所有输入输出接口及其中的一些连线。
//countermodule exp5(clk,o);input clk;output [7:0] o;wire m,n,mnot,nnot;3)然后程序直接调用所需的模块以实现其功能。
freqDiv FA2 (clk,cp); //used to change the clock rateexp4 FA0 (mnot,cp,m,mnot); //used as a D flip-flopexp4 FA1 (nnot,m,n,nnot);num FA3 (m,n,o); //used to control the outputendmodule4)在D触发器模块单元中,同样首先定义好其输入输出,其中变量d为触发器中的data,clk为触发器中的时钟信号,q为输出Q,p为输出~Q。
定义p,q为寄存器变量。
//This module is used as a D flip-flopmodule exp4(d,clk,q,p);input d,clk;output p,q;reg p,q;5)然后根据D触发器的功能要求在接收到时钟传来的上升沿信号时,输出Q与data相同,输出~Q与data相反。
成绩评定表课程设计任务书摘要人们在日常的生活,工作,学习等方面,到处都会遇到计数问题,离不开计数。
本文主要针对的是四位二进制加法计数器的问题。
按二进制递增规律来进行计数。
我们通过学习与阅读更深一步了解了计数器的工作原理和逻辑功能。
本文采用VHDL硬件描述语言实现了四位二进制加法计数器(缺0001 0010 0011 0100)的问题,采用QUARTUSⅡ对加法计数器进行编译和仿真。
关键词:四位二进制;加法计数器;VHDL;QUARTUSⅡ。
目录一.课程设计目的 (1)二.课设题目实现框图 (1)三.实现过程 (2)VHDL的编译和仿真 (2)1.建立工程 (2)2.VHDL源程序 (5)3.编译及仿真过程 (6)4.引脚锁定及下载 (9)5.仿真结果分析 (11)四.设计体会 (12)五.参考文献 (13)一、课程设计目的1.熟悉掌握计数器的原理和功能;2.熟悉掌握QuartusII的使用方法,并用VHDL语言对计数器进行编译和仿真;3.掌握实验箱的使用和程序的下载;4.掌握Multisim的使用方法并进行计数器的实现;二、课设题目实现框图状态转换图是描述时序电路的一种方法,具有形象直观的特点,即其把所用触发器的状态转换关系及转换条件用几何图形表示出来,十分清新,便于查看。
在本课程设计中,四位二进制同步加法计数器用四个CP下降沿触发的JK 触发器实现,其中有相应的跳变,即跳过了0001 0010 0011 0100四个状态,这在状态转换图中可以清晰地显示出来。
具体结构示意框图和状态转换图如下:0000 0101 0110 0111 1000 10011111 1110 1101 1100 1011 1010缺(0001 0010 0011 0100)B: 状态图三、实现过程(VHDL的编译和仿真)1.建立工程创建一个工程,具体操作过程如下:(1)点击File –> New Project Wizard创建一个新工程,如图1-1;图1-1(2)点击Next,为工程选择存储目录、工程名称、顶层实体名等,并点击Next,如图1-2;图1-2(3) 点Next,进入设备选择对话框,如图1-3,这里选中实验箱的核心芯片CYCLONE系列FPGA产品EP1C6Q240C8;图1-3(4)点击Next,系统显示如图1-4,提示是否需要其他EDA工具,这里不选任何其他工具;图1-4(5)点击Next后,系统提示创建工程的各属性总结,若没有错误,点击Finish,如图1-5图1-52.VHDL源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity count10 isPORT (cp,r:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); end count10;ARCHITECTURE Behavioral OF count10 ISSIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0) ;BEGINPROCESS (cp,r)BEGINif r='0' then count<="0000";elsiF cp'EVENT AND cp='1' THENif count="0000" THENcount <="0101";ELSE count <= count +1;END IF;end if;END PROCESS;q<= count;End Behavioral;3.编译和仿真过程(1)点击File->New创建一个设计文件,选择设计文件的类型为VHDL File,如图1-6;图1-6(2)在编辑窗口中编辑程序,如图1-7;图1-7(3)点击Processing->Start Compilation编译该文件,系统将开始编译,结束后,给出提示信息和编译结果,如图1-8所示:图1-8(4)建立时序仿真文件,选择“Vector Waveform File”,如图1-9;图1-9(5)在Name处击右键,Insert→Insert Node or Bus,单击,单击,再单击→OK→OK,如图1-10所示;图1-10(6)对其进行仿真,结果如图1-11,1-12.图1-11图1-12 4.引脚的锁定及下载各引脚的锁定如表1所示:表1引脚的锁定和下载分别如图1-13和1-14所示;图1-13图1-145.仿真结果分析仿真结果如图1-15所示:图3-1-14图1-15结果分析:由仿真波形图可以清晰的看出加法计数器的工作过程,由0000起依次递增,最后加至1111后再由0000起进行下一个周期的循环,其中缺少0001 0010 0011 0100四个状态。
实验二:用一位全加器设计一个四位的加法器1.实验目的熟悉软件MAX+plusII掌握E D A实验仪的使用方法2.实验内容a.利用一位全加器设计一个四位的加法器b.利用MAX+plusⅡ软件,对下图所示的逻辑图进行编译和仿真,并选择器件进行定时分析。
3.实验过程a)建立项目文件夹,取名为s_a d d e rb)输入设计项目和存盘(附上原理图)(1)在原理图编辑窗口中插入4个一位全加器。
(2)再将它们联接成一个四位的加法器。
(3)输入两个4位的二进制数,输出一个4位的和,一位进位。
(4)A3A2A1A0+B3B2B1B0=S3S2S1S0进位C4(5)为了使输入输出的线减少,可以使用总线加标号的画法。
(6)单条线间的联接也可以用标号联接,减少走线的长度,使图面简洁明了。
c)将设计项目设置成工程文件d)选择目标器件并编译首先选择最后实现本项设计的目标器件;其次对工程文件进行编译,综合和适配等操作,最后消去Q u a r t u s,完成编译。
e)时序仿真(附波形图)首先建立波形文件,输入信号点,其次设置波形参量,设定访真时间,加上输入信号,文件存盘,运行访真器件,观察分析加法访真波形,打开时序分析器,精确测量加法器输入和输出波形间的延长量f)引脚锁定加法器选用结构图1, 引脚对应情况实验板位置加法器信号通用目标器件引脚名目标器件EP1K30TC144引脚号键4 a0 PIO12 26键4 a1 PIO13 27键4 a2 PIO14 28键4 a3 PIO15 29键3 b0 PIO8 20键3 b1 PIO9 21键3 b2 PIO10 22键3 b3 PIO11 23数码管8 s0 PIO28 68数码管8 s1 PIO29 69数码管8 s2 PIO30 70数码管8 s3 PIO31 72发光二级管D8 c4 PIO39 86g)编译并编程下载,硬件测试逻辑功能加法器输入输出键1(a[3..0]) 键2(b[3..0]) c4 S[3..0]低低低低低高低高高低低高高高高低4.实验结果(分析电路功能)5.遇到问题及解决方法(1)在连接原理图的时候,会遗漏某些字母或是忘记连接某些线,造成实验无法运行。