基于fpga的mcs-51单片机的逻辑运算模块设计本科毕业设计(编辑修改稿)内容摘要:

常工作。 程序计数器 PC 用来存放即将要执行的指令地址,它可以完成 64K 的外部存储器寻址,执行指令时, PC 内容的高 8 位经 P2 口输出,低 8 位经 P0 口输出。 数据指针 DPTR 为 16 位数据指针,它可以对 64K 的外部数据存储器和 I/O 口进行寻址,它的低 8 位为 DPL(地址 82H),高 8 位为 DPH(地址为 83H)。 堆栈指 针 SP 在片内 RAM( 128 字节)中开辟栈区,并随时跟踪栈顶地址,它按先进后出的原则存取数据,上电复位后, SP 指向 07H。 3. 存储器 MCS- 51 系列单片机的存储器包括数据存储器和程序存储器,其主要特点是程序存储器和数据存储器的寻址空间是相互独立的,物理结构也不相同。 对 MCS- 51系列( 8031 除外)而言,有 4 个物理上相互独立的存储器空间:即内、外程序存储器和内、外数据存储器。 对于 8051 其芯片中共有 256 个 RAM 单元,其中后 128个单元被专用寄存器占用,只有前 128 个单元供用户使用。 4. 定时器 /计数器 基于 FPGA的 MCS51单片机的算术 运算模块设计 10 MCS- 51 系列单片机有两个可编程定时器 /计数器,即定时器 /计数器 0和 1。 它们各具有两种工作模式 (定时器模式和计数器模式 )和 4 种工作方式 (方式 0,方式 方式 方式 3)。 4 种工作方式中,前三种方式对两个定时器 /计数器都是一样的,方式 3 对两者时不同的,这一点在设计时要注意。 特殊功能寄存器 TMOD(定时器 /计数器方式控制寄存器 )用于控制定时器 /计数器的工作模式和过方式。 另一个特殊功能寄存器 TCON(定时器 /计数器控制寄存器 )用于 T0 和 T1 的启动和停止计数,同 时 还包含了 T0 和 T1 的状态。 有关定时器 /计数器的各个 工作方式将在具体设计中详细叙述。 5. 串行口 MCS- 51 系列单片机内部有一个功能很强的全双工的串行口,该串行口有四种工作方式,波特率可以由软件设置,由片内的定时器 /计数器产生。 串行口有两个物理上独立地接收、发送缓冲器 SBUF,可以同时发送、接收数据,发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,两个缓冲器公用一个字节地址 (99H)。 串行口的接收、发送数据均可触发中断系统。 同时,还有两个控制寄存器来控制 MCS- 51 单片机地串行口,它们是特殊功能寄存器 SCON 和 PCON。 6.并行口 MCS- 51 单 片机共有 4 个 8 位的 I/O 口( P0、 P P2 和 P3),每一条 I/O 线都能独立地用作输入或输出。 P0 口为三态双向口,能带 8 个 TTL 门电路, P P2和 P3 口为准双向口,负载能力为 4 个 TTL 门电路。 7.中断控制系统 MCS- 51 单片机的中断功能较强,以满足控制应用的需要。 8051 共有 5 个中断源,即外中断 2 个,定时 /计数中断 2 个,串行中断 1 个。 所有中断分为高级和低级两个中断优先级。 8.时钟电路 MCS- 51 芯片内部有时钟电路,但晶体振荡器和微调电容必须外接。 时钟电路为单片机产生时钟脉冲序列,振荡器的频率范围为 ~ 12MHz,典型取值为6MHZ。 9.总线 基于 FPGA的 MCS51单片机的算术 运算模块设计 11 以上所有组成部分都是通过总线连接起来,从而构成一个完整的单片机。 系统的地址信号、数据信号和控制信号都是通过总线传送的,总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。 MCS51 单片机的指令系统的实现原理 MCS- 51系列单片机的指令系统采用汇编语言,它的指令系统是一种简明高效的指令系统,由 42 种助记符和 7 种寻址方式组合而成。 其基本指令共有111 条,其中单字节指令 49 条,双字节指令 45 条,三字节指令 17 条。 如果按功能可以讲这些指令分 为五类 :数据传送类 (29 条 )、算术操作类 (24 条 )、逻辑操作类 (24条 )、控制转移类 (17条 )以及位变量操作类 (17条 )。 对于反向设计而言,我们关心的不是它的各种具体指令的多少而是指令的寻址方式。 所谓的寻址方式就是寻找确定参与操作的数的真正地址。 MCS- 51系列单片机的 111 条指令一共只采用了 7 种寻址方式。 它们分别为:立即寻址 、 直接寻找 、 寄存器寻址 、 寄存器间接寻址 、 变址寻址 、 相对寻址 、 位寻址。 基于 FPGA的 MCS51单片机的算术 运算模块设计 12 第三章 ALU 的原理分析与实现工具 ALU 的原理分析 8051 单片机的 ALU 是一个性能极强的运算器,它的 功能为: ( 1)加、减、乘、除四则运算。 ( 2)与、或、非、异或等逻辑运算。 ( 3)数据传送、移位、判断和程序转移等功能。 8051 单片机的 ALU 为用户提供了丰富的指令系统和极快的指令执行速度,大部分指令的执行时间为 1μs,乘法指令可达 4μs。 8051 时钟频率可达 12MHZ。 用 FPGA 实现 ALU 的设计 在现代电子系统中,数字系统所占的比例越来越大。 现代电子系统发展的趋势是数字化和集成化, CPLD/FPGA 作为可编程 ASIC 器件,在数字系统设计中发挥着重要的作用。 与传统的可编程器件相比, FPGA 采用 了类似门阵列的通用结构,规模可以做的较大,可实现的功能更强,设计的灵活性更大。 且 FPGA 的容量越来越大,它所提供的门数从几百门到上百万门,可以满足不同的需要。 因此用 FPGA来实现 ALU 的功能不会受到 FPGA 门数的限制。 用 FPGA 实现的 ALU 有很多优点: (1)编程方式简便先进。 (2)高速 : FPGA 的时钟延迟可达纳秒级,结合其并行工作方式在超高速应用领域和实时测控方面有非常广阔的应用前景。 (3)高可靠性 : 表现在 几乎可将整个系统下载于同一芯片中从而大大缩小了体积易于管理和屏蔽。 (4)开发工具和设计语言标准 化开发周期短。 (5)功能强大应用广阔 的 FPGA 可供选择范围很大,可根据不同的应用选用不同容量的芯片。 利用它们可实现几乎任何形式的数字电路或数字系统的设计。 (6)易学易用开 发便捷 : FPGA 应用的 学习不需太多的预备知识,只要具有通常的数字电路和计算机编程基础知识,就足以在短期内掌握基本的设计方法和开发技巧。 基于 FPGA的 MCS51单片机的算术 运算模块设计 13 ALU 的实现 工具 VHDL 语言 VHDL 语言的英文全名是 Very High Speed Integrated Circuit Hardware Description Language 即超高速集 成电路硬件描述语言,是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结合和连接形式。 与传统的门级描述方式相比,它更适合大规模系统的设计。 VHDL 的优点 : (1)语言标准、规范、描 述能力强。 (2)可读性好,易于共享和复用。 (3)支持数字电路的开发环境,设计技术齐全、方法灵活。 (4)可以与工艺无关编程。 (5)支持层次化 (框图 )、出错处理和验证。 基于 FPGA的 MCS51单片机的算术 运算模块设计 14 第四章 MCS51 单片机的算术模块设计 算术运算模块的功能是按照控制单元给出的指令,对来自数据存储器、程序存储器、累加器 A 以及程序状态字的相关位的数据,进行相关的算术和逻辑运算。 本模块只进行字节运算,而不象原始的 MCS- 51 那样,在 ALU中还可以进行位运算 (4 位运算将直接在控制器中处理 )。 这个模块将用纯组合逻辑电路来实现。 ALU 模块 的 实体 结构如图 4- 1 所示。 图 41 ALU 模块实体图 ALU 由 6 个模块组成 : 分别是译码与控制分配模块 alumux、逻辑运算模块 alucore、加减模块 addsub、乘法模块 mul、除法模块 div 和二十进制调整模块 adjust。 基于 FPGA的 MCS51单片机的算术 运算模块设计 15 图 42 是 ALU 模块设计层次图 加 /减法器 设计 addsub 加减法模块主要用来实现 alu 模块算术运算中的加减法运算,由于减法运算实现也可以转化成加法运算,因此 addsub 模块的实现实质就是加法器的设计,实现后的实体图如图 43 所示。 其中输入端口 18 个,两个 8 位的操作数端口 opa_i 和 opb_i,用于存放加数和被加数;一个状态位 cy_i,即低位的进位输入;另一个输入端为加减法选择信号 addsub_i,高电平时为加法操作,低电平时为减法操作。 输出端口 11 个,包括 8 位的运算结果输出端口rslt_o,两位的进位状态标志位 cy_o 和一位溢出状态标志位 ov_o。 设计采用组合逻辑设计方法,所以对于设计的关键部分,并行进位的产生相应的有一定的要求,即 VHDL 语言中的进位信号的表示应使用变量 (variable),而不能使用信号量 (signal)。 因此在 VHDL 语言中,可直接按照公式的要求进行编写代码,其结果将由信号 rslt_o 代出 addsub 模块,返回到 alumux 中。 ALU ALUMUX ALUCORE ADDSUBCOR MULTIPLC DIVIDER ADJUST ADDSUBCY ADDSUBOVCY 基于 FPGA的 MCS51单片机的算术 运算模块设计 16 图 43 加 /法器实体图 加减法器模块设计的 VHDL 程序如下: library ieee。 use。 entity addsub is port (opa_i:in std_logic_vector(7 downto 0)。 opb_i:in std_logic_vector(7 downto 0)。 cy_i:in std_logic。 addsub_i:in std_logic。 ov_o:out std_logic。 rslt_o:out std_logic_vector(7 downto 0)。 cy_o:out std_logic_vector(1 downto 0))。 end addsub。 architecture rtl of addsub is begin process(opa_i,opb_i,cy_i,addsub_i) 基于 FPGA的 MCS51单片机的算术 运算模块设计 17 variable s_c:std_logic_vector(7 downto 0)。 variable p:std_logic_vector(8 downto 1)。 variable g:std_logic_vector(8 downto 1)。 variable c:std_logic_vector(8 downto 0)。 begin if addsub_i=39。 139。 thenadder p:=opa_i xor opb_i。 g:=opa_i and opb_i。 c(0):=cy_i。 c(1):=g(1)or(p(1)and c(0))。 c(2):=g(2)or(p(2)and g(1))or(p(2)and p(1)and c(0))。 c(3):=g(3)or(p(3)and g(2))or(p(3)and p(2)and g(1))or。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。