ImageVerifierCode 换一换
格式:DOCX , 页数:51 ,大小:252.59KB ,
资源ID:10135522      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10135522.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于VHDL的单片机设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于VHDL的单片机设计.docx

1、基于VHDL的单片机设计基于VHDL的单片机设计学生:丁洁 指导老师:陈沅涛摘要:本文首先对MCS8051单片机的原理进行介绍和分析;接着介绍使用EDA技术,用VHDL语言完成了8051单片机的设计工作;MCS8051单片机的CPU和数模转换器的设计运用了算术逻辑单元ALU算术运算的算法实现和控制单元的状态机;以及数模转换器的-调制方法的实现。通过如上的算法实现,可以看出VHDL语言在算法级的设计上具有很多的优势和特点。使用EDA技术设计的结果既可以用FPGACPLD来实施验证,也可以直接做成专用集成电路(ASIC)。关键词:电子设计自动化(EDA)、VHDL语言、FPGACPLD 、8051

2、单片机1引言 伴随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,己经广泛应用于模拟与数字电路系统等许多领域。电子设计自动化是一种实现电子系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。EDA技术的发展始干70年代,至今经历了三个阶段。电子线路的C A D(计算机辅助设计)是EDA发展的初级阶段,80年代初期,形成了CAE(计算机辅助工程)。也就是所谓的EDA技术中级阶段。90年代出现了以自动综合器和硬件描述语言为基础,全面支持电子设计自动化ESDA(

3、电子系统设计自动化),即高级EDA阶段、也就是目前常说的EDA1。使用EDA技术设计的结果既可以用FPGACPLD来实施验证,也可以直接做成专用集成电路(ASIC)。EDA的一个重要特征就是使用硬件描述语言(HDL)来完成的设计文件,诞生于1982年的VHDL语言是经IEEE确认的标准硬件描述语言,在电子设计领域受到了广泛的接受。1.1课题的背景、目的 进入90年代,电子信息类产品的开发明显地出现了两个特点:一是开发产品的复杂程度加深;二是开发产品的上市时限紧迫。而伴随着如上两个特点的产生,相应的出现了设计上的两个问题。其一,在电子系统日趋数字化、复杂化和大规模集成化的今天,电子厂商们越加迫切

4、地追求电子产品的高功能、优品质、低成本、微功耗和微小封装尺寸,从而使得电子设计日趋复杂。那么如何去完成这些高复杂度的电子设计呢?其二,电子产品设计周期短和上市快是电子厂商们坚持不懈的追求,那么面对日趋复杂的设计,又如何能够缩短开发时间呢?解决以上两个问题的唯一途径是电子设计自动化(EDA),即用计算机帮助设计人员完成繁琐的设计工作。1.2课程设计的内容(1)单片机的基本原理和内部结构。从单片机的内部结构入手,对单片机的基本原理和功能进行介绍和分析,进而提出可改进之处。(2)EDA的开发中离不开EDA工具的使用,好的开发工具会使设计更加便捷与高效,且会提高设计的效率与效果。(3)本文重点介绍了基

5、于FPGA和VHDL语言的开发过程,对设计方案中的各模块进行详细介绍和验证,并对整体性能进行分析。2 EDA、VHDL简介2.1 EDA简介 电子设计自动化(EDA,ElectronicDesignAutomation)是指利用计算机完成电子系统的设计2。EDA技术是以计算机和微电子技术为先导,汇集了计算机图形学、拓扑、逻辑学、微电子工艺与结构学和计算数学等多种计算机应用学科最新成果的先进技术。EDA技术以计算机为工具,代替人完成数字系统的逻辑综合、布局布线和设计仿真等工作。设计人员只需要完成对系统功能的描述,就可以由计算机软件进行处理,得到设计结果,而且修改设计如同修改软件一样方便,可以极大

6、地提高设计效率。根据电子设计技术的发展特征,EDA技术发展大致分为三个阶段:(1)CAD阶段(20世纪60年代中期20世纪80年代初期)(2)CAE阶段(20世纪80年代初期20世纪90年代初期)(3)EDA阶段(20世纪90年代以来)。2.2VHDL简介 VHDL英文名是Very-High-Speed Integrated Circuit Hardware Language,诞生于1982年。1987年底被IEEE(TheInstituteofElectricalandElectronicsEngineers)和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本(IEEE-

7、1076)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本。 现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL和Verilog语言将承担起几乎全部的数字系统设计任务。由于本设计主要使用VHD

8、L语言,故只对VHDL语言的特点进行简要的介绍。应用VHDL进行工程设计的优点是多方面的,具体如下: 1.与其它的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 2.VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能。VHDL中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有利的支持。 3.对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动地把VHDL描述设计转变

9、成门级网表(根据不同的实现芯片)。这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。应用EDA工具的逻辑优化功能,可以自动地把一个综合后的设计变成一个更小、更高速的电路系统。 4.可以进行与工艺无关编程。VHDL语言设计系统硬件时,没有嵌入描述与工艺相关的信息,不会因为工艺变化而使描述过时,与工艺技术有关的参数可通过VHDL提供的类属加以描述。 5.方便ASIC移植。当产品达到相当数量时,采用VHLD进行的设计可以很容易转成用专用集成电路(ASIC)来实现,甚至用于PLD的源代码可以直接用于ASIC。3 基于VHDL语言的单片机设计过程3.1系统设计模块

10、划分方案 对8051单片机的设计分成五个模块来实现8051系统。这五个模块为:CPU模块、计数器/定时器模块、UART串口模块、存储器模块和DAC模块。其中DAC为传统8051所不具备的功能模块。 其中,CPU模块又分为控制单元模块和ALU单元模块,且每一个模块又分为几个模块。中断系统模块并未使用单独的设计模块存在的形式来设计,而是与CPU的设计整合为一体,因为这样会使得设计达到更好的效果,更符合VHDL语言的使用规范和提高设计效率。这样的划分只是为了更好的实现CPU模块的功能,又能方便设计的进行,不至于在设计过程中引起逻辑上的混乱。 存储器模块又分为RAM模块、ROM模块和FIFO模块。对于

11、FPGA来说,使用它来实现存储器模块有很多方法,可以直接利用其内部内嵌的RAM模块,也可以利用VHDL语言直接编写。本文的设计中RAM和ROM的设计直接利用了Altera公司提供的单元库和FPGA中的RAM单元,这样可时设计简化,缩短开发时间。而FIFO的设计采用的是使用VHDL语言直接编写3。这些方法的应用体现出了使用FPGA进行设计的灵活性和时效性。传统的8051中没有FIFO模块的存在,而本文的设计中考虑到如今器件的速度越来越快,数据的传输通过FIFO来缓存是很通行的做法,故在本设计中加入FIFO模块的设计。 计数器/定时器模块、UART串口模块的设计均在一个模块内完成。计数器/定时器和

12、UART串口模块的设计遵从了8051单片机的设计标准,使用VHDL语言完全实现了相应的功能。而且各个模块均可独立使用,可单独作为一个IP核存在,其它的设计模块也可单独使用,所以利用FPGA和VHDL语言所做的设计具有很好的通用性。 DAC模块的设计是一种新增功能。在本设计中增加了此模块的设计,主要是考虑增加8051的功能,以及为系统设计提供方便性。同时,也体现出硬件设计的一种发展方向,即系统集成化。也为以后的设计工作提供一种借鉴方式。3.2各模块原理及程序 3.2.1 CPU模块 图3-1为CPU整体框图。由图可知,CPU由两个模块组成,alu模块和control模块。下面对两个模块进行论述。

13、 ALU单元的VHDL语言实现 ALU单元可以直接或间接的执行很多指令,如加、减、乘、除等算术运算指令;逻辑与、或、异或等逻辑运算指令以及移位操作指令。这些指令是8051单片机的核心指令,分为算术运算、逻辑运算和环移指令等三大类。本设计中由ALU单元执行的指令共53条,除去上述的算术运算、逻辑运算和环移指令外,还包括条件转移指令中的比较条件转移指令CJNE和减1条件转移指令DJNZ。图3-1CPU整体框图这种设计方法主要考虑比较条件转移指令CJNE设计上的方便与规范性;而减1条件转移指令DJNZ的指令操作需要进行减1操作,正好可以利用ALU单元的相应算术运算来进行,因此可通过ALU单元来间接的

14、运行实现。此类条件转移指令共6条,是由ALU单元间接实现的;其余的47条指令则由ALU单元直接实现,这47条指令包括算术逻辑运算指令、逻辑运算指令和环移指令。ALU单元要control单元配合起来工作才可正常运行,即需由control单元提供控制信号和数据给ALU单元。 控制单元的VHDL语言实现 控制单元起着控制器的作用,单片机程序和原始数据的输入、CPU内部的信息处理、处理结果的输出、外部设备与单片机之间的信息交换等,都是在控制单元的控制下实现的。本设计中控制单元主要完成的功能为指令译码、中断判优及处理、时序控制和微操作控制等。图3-2控制单元整体框图 由图3-2可知,控制单元由两个:co

15、ntrol_fsm模块和control_mem模块,其主要的设计方法为有限状态机的设计,通过状态的转换而产生相应的微操作信号,进而实现相应的指令的执行4。其中,control_fsm模块主要实现中断的响应及111条指令的译码并产生各指令的微操作码,主要是通过有限状态机的设计来实现相应的功能;而control_mem模块主要完成由control_fsm模块产生的微操作信号的具体操作过程,控制RAM存储器的读写地址及数据传输、PC寄存器的赋值、串口与定时器的中断信号处理、中断的查询、特殊寄存器的读写等功能。其VHDL语言实现代码如下:when IC_ADD_A_RR= -ADD A,Rr if s

16、tate=FETCH then s_adr_mux=0110; -确定Rr的地址 s_nextstate=EXEC1; -转至EXEC1状态执行 elsif state=EXEC1 then alu_cmd_o=ADD_ACC_RAM; -通知ALU单元执行加法操作 s_data_mux=0011; -ALU单元操作数值操作 s_regs_wr_en=011; -对累加器及相应状态位进行操作 s_pc_inc_en=0001; -对PC寄存器进行操作 s_nextstate=FETCH; -返回FETCH状态,等待下一条指令的执行 end if; 本指令为单字节双时钟周期指令,寻址方式为寄存器

17、寻址。当从指令存储器中取出的指令代码与程序中代码IC_ADD_A_RR相对应时,即执行本段代码程序。执行过程如下,在FETCH状态时,确定是寄存器寻址方式(由control_fsm模块完成),然后转到相应的寄存器寻址方式处理段代码进行寄存器地址的确定(由control_mem模块完成),为寄存器内数据的取出做准备;然后是状态转移到EXEC1进行操作。当进入EXEC1状态后进行如下操作,通知ALU单元进行加法操作,操作数为ACC和相应的RAM单元;提供ALU单元所需的运算数据,使ALU单元进行运算;把操作结果写入ACC,并对标志位CY,OV,AC置位;使程序计数器PC加1;使状态机返回到FETC

18、H状态,等待下一条指令的执行。至此本条指令运行结束。 3.2.1计数器/定时器模块 定时器/计数器是16位的定时器/计数器,本设计中有两个这样的定时器/计数器,这也是8051本身所具有的特征。对这两个定时器/计数器的控制主要是通过TCON和TMOD两个特殊功能寄存器实现的。图3-3、图3-4列出了这两个寄存器的控制位。图3-3定时器控制寄存器TCON各位定义由图3-3和3-4可知,定时器/计数器的工作状态和工作模式,主要由TCON和TMOD两个特殊寄存器的状态位来控制。而这些控制位的信号是通过CPU来控制和加载的,CPU通过传递给特殊寄存器相应的值进而控制定时器/计数器的操作。而定时器/计数器

19、又有两种工作模式,即定时器模式和计数器模式,在每种模式2、3。表3.1列出了它们在四种工作方式下的不同功能。 图3-4定时器方式控制寄存器TMOD格式表3.1定时器/计数器工作方式3.2.1UART串口模块 UART串口是全双工通用异步接收/发送器,可用于串行通信。有两个数据缓冲器(SBUF),一个用作发送,另一个用作接收。这两个数据缓冲器物理上各自独立,通用一个地址99H,发送缓冲器只写不读,接收缓冲器只读不写。其中接收缓冲器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时响应接收器中断,没有把上一帧数据读走而产生两帧数据重叠问题。图3-5串口控制寄存器SCON中各位的定义图3-6串口

20、波特率寄存器PCON中各位的定义串口的控制是通过控制寄存器SCON和PCON来实现的,图3-5、图3-6列出了以上两寄存器的各控制位。其中,图3-5中SM0与SM1为串行口方式控制位,用于设定串行口的工作方式,如表3.2所示。而图3-6中PCON的8位控制位中只使用了最高位来控制串口波特率的选择。而在8051单片机中还使用了低4位,其功能主要是控制单片机的空闲与掉电工作方式。表3.2串行口工作方式表 3.2.1存储器模块 RAM存储器可以用来存储实时数据、中间结果、最终结果或作为程序的堆栈区使用。从有关8051存储器的相关内容可知,8051内部有128个字节的RAM,且可外接RAM。所以本设计

21、中设计了128个字节的片内RAM和64K的片外RAM。其中片内128个字节的RAM是与CPU模块做到一片FPGA中的,而片外64KRAM是通过FPGA的接口与整个设计连接在一起的,当然64KRAM也可以放到片内,这可以由使用时的环境和FPGA容量的大小来决定。 图3-7RAM单元外形框图 图3-7是RAM单元外形框图。它采用Altera公司提供的存储器模块来设计,即直接从库中调用该元件,在VHDL语言中进行例化来使用。这也是Altera公司推荐的存储器设计方法。主要可以缩短开发时间,且增加可靠性5。 3.2.1DAC模块 D/A转换器(Digital to Analog Converter)是

22、一种能把数字量转换成模拟量的电子器件。在单片机控制系统中,经常需要用到D/A转换器,在架设单片机和被控实体之间的桥梁时,D/A转换器占有极为重要的地位。而在以往的应用中,单片机与D/A转换器是以分立元件的形式存在的。图3-8DAC外形框图随着科技的发展,SoC已经成为一种发展趋势,所以本文在这方面也做了研究,把单片机与D/A转换器用同一片FPGA来实现。实现的框图如图3-8所示。图中所示是本DAC设计的原理框图,输入端包括时钟信号clk、复位信号reset,高电平有效、DAC工作控制信号cont,DAC的工作使能控制端和8位数据输入dacin。由于DAC是通过FPGA来实现的,而FPGA只能做

23、数字设计,所以本设计中模拟输出的实现还需要增加外部电路,而外部电路只需要由一个电阻和一个电容组成的低通滤波器即可实现相应的功能。低通滤波器由FPGA的输出dacout来驱动,Vout的取值可以从0V到Vcco,其中Vcco的值由FPGA的端口电压来决定。 4模块功能验证4.1 CPU模块的功能验证 把ALU单元和控制单元整合为一体即成为了CPU模块。CPU模块是本设计的核心内容,也是整个单片机的核心部分。由于单片机的指令较多,不能一一列出验证结果,故在此以简单的程序来进行验证。 程序代码如下:MOV A , #00H; 寄存器A中存入立即数00HANL A , #80H; 寄存器A中的值与立即

24、数80H进行与操作MOV P0, A; 寄存器A中的值从P0口输出验证结果波形图如图4-1所示:图4-1验证波形图 从4-1图可知,P0口输出值为0,与期望输出值相同,可见达到了预期的设计目的,实现了指令的功能。4.2 UART模块的功能验证 工作方式0功能验证:方式0为寄存器输入/输出方式,Rxdwr_o为数据传输标志位,数据开始传输时为1,传输完毕为0。Txd_o传输同步脉冲,传输8个脉冲后ti和ri置1,表示一帧传输完毕,可以申请中断。图4-2串口方式0波形图从图4-2中波形可看出实现了数据串行传送的功能,达到了设计要求。结束语 通过本系统的开发有如下体会:对于一个系统的开发,最初的模块

25、划分是非常重要的。随着系统的复杂度的增大,模块划分对系统的后续开发显示出越来越大的重要性。致谢在这次课程设计过程中,非常感谢陈沅涛老师的指导,在陈老师身上学到的不仅仅是知识的层面,更重要的是他追求知识的热情和本身严谨的工作态度。他的工作作风以及对生活的态度同样让我受益匪浅。参考文献1. 褚振勇,翁木云.FPGA设计及应用.西安电子科技大学出版社.2000.32. 黄正谨,徐坚,章小丽等.CPLD系统设计机输入门与应用J.电子2002.33. 张洪润,蓝清华.单片机应用技术教程M.清华大学出版社.1999.94. 胡汉才.单片机原理及其接口技术M.清华大学出版社.2000.35. I.Scott

26、 Mackenzie.The 8051 Microcontroller.Microelectronics Journal,Volume30,Issue 8,August 1999附录:基于VHDL语言单片机设计部分程序代码-Timer/Counter Module-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity timer isport(clk,reset : in std_logic;tr0,tr1 : in std_log

27、ic;-tcon(4),tcon(6)Tmod : in std_logic_vector(7 downto 0);-register TMODload_i : in std_logic_vector(7 downto 0);int0,int1 : in std_logic;-专门功能中断t0,t1 : in std_logic;-外部事件脉冲输入Ec : in std_logic_vector(1 downto 0);-TH,TL赋值使能端ec_e : in std_logic;th0,tl0 : out std_logic_vector(7 downto 0);-register TH0,

28、TL0th1,tl1 : out std_logic_vector(7 downto 0);-register TH1,TL1tf1,tf0:out std_logic); -溢出中断标志end timer;architecture bev of timer issignal qa,qb:unsigned(15 downto 0); -计数存储器signal countl0,counth0 :unsigned(7 downto 0);signal countl1,counth1 :unsigned(7 downto 0);signal gate0,gate1 :std_logic; -门控位t

29、mod(7),tmod(3)signal c0,c1 :std_logic;-tmod(6),tmod(2)signal tf0_o,tf1_o :std_logic; -tf0,tf1输出存储器signal m:unsigned(1 downto 0); -timer/counter 0工作方式选择signal n : unsigned(1 downto 0); -timer/counter 1工作方式选择signal tr00,tr11 :std_logic; - -计数器使能signal t0_v,t1_v :std_logic; -t0,t1下降沿微分两次采样存储器signal q0,

30、q1,q2,q3 :std_logic; -t0,t1 samplingbegin a:blockbegin gate0=tmod(3); c0=tmod(2);m(1)=tmod(1);m(0)=tmod(0);gate1=tmod(7);c1=tmod(6);n(1)=tmod(5);n(0)=tmod(4);tr00=tr0 and(not gate0)or int0);tr11=tr1 and(not gate1)or int1);tf0=tf0_o;tf1=tf1_o;th0=std_logic_vector(qa(15 downto 8);tl0=std_logic_vector(qa(7 downto 0);th1=std_logic_vector(qb(15 downto 8);tl1=std_logic_vector(qb(7 downto 0);end block a;b:blockbegin t0_v=1when(q1=1and q0=0)else0; process(clk,reset) begin f reset=1then q0=0; q1=0; else if clkevent and clk=1then if c0=1then q0=t0; q1=q0; end if; end if; end if;end process;t1_v=1w

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1