首页 开发一个与8051单片机完全兼容的IP内核

开发一个与8051单片机完全兼容的IP内核

举报
开通vip

开发一个与8051单片机完全兼容的IP内核目录 目录 3摘要 4Abstract 5第一章 绪论 5§1.1 集成电路设计简介 51.1.1 集成电路发展简史 61.1.2 集成电路设计流程 81.1.3 集成电路设计方法 8§1.2 VHDL语言简介 81.2.1 硬件描述语言 91.2.2 VHDL语言 10§1.3 MCS-51单片机简介 101.3.1 单片机的产生和发展 111.3.2 Intel MCS-51单片机 11§1.4 开发工具的选择 111.4.1 VHDL开发工...

开发一个与8051单片机完全兼容的IP内核
目录 目录 3摘要 4Abstract 5第一章 绪论 5§1.1 集成电路 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 简介 51.1.1 集成电路发展简史 61.1.2 集成电路设计流程 81.1.3 集成电路设计方法 8§1.2 VHDL语言简介 81.2.1 硬件描述语言 91.2.2 VHDL语言 10§1.3 MCS-51单片机简介 101.3.1 单片机的产生和发展 111.3.2 Intel MCS-51单片机 11§1.4 开发工具的选择 111.4.1 VHDL开发工具 121.4.2 Altera公司的Max+Plus II 121.4.3 Altera公司的Quartus II 121.4.4 Aldec公司的Active HDL 131.4.5 其他辅助工具 13§1.5 本次毕业设计的意义及目标 131.5.1 毕业设计的意义 141.5.1 毕业设计的目标 15第二章 系统总体规划与构思 15§2.1 MCS-51单片机的总体结构 152.1.1 MCS-51单片机硬件结构的特点 152.1.2 MCS-51单片机的引脚描述 172.1.3 MCS-51片内总体结构 19§2.2 MCS-51单片机的指令分解 192.2.1 CPU时序 202.2.2 指令分解 22§2.3 各部分模块的初步划分 222.3.1 总体设计思想 222.3.2 各模块的划分 242.3.3 各模块的简单说明 26第三章 译码/控制模块的实现 26§3.1 译码/控制模块设计思想 263.1.1模块功能 263.1.2设计思想 27§3.2 译码/控制模块的实现过程 273.2.1接口及控制信号 33第四章 总结与展望 33§4.1 阶段成果和心得 33§4.2 不足与展望 334.2.1 存在的不足 344.2.2 改进意见 35附录 35参考文献 摘要 MCS-51是Intel公司生产的其中一个单片机系列的名称。该系列单片机诞生于1980年,功能强大、应用方便,已成为单片机领域的实际标准。而VHDL语言则是应用广泛的一种硬件描述语言,目前越来越多的厂商、科研机构在使用VHDL语言进行系统开发。 本文详细介绍应用VHDL语言进行MCS-51兼容单片机开发的过程,包括指令的分解、模块的划分以及功能的实现等。其中,重点讲述控制/译码模块的实现。 关键词:硬件描述语言,机器周期,指令周期 Abstract MCS-51 is the name of a Micro Chip Unit(MCU) that produced by Intel Corporation. These MCUs were first produced in 1980. It has powerful function and can be easily used, so it becomes the standard of the MCUs. And VHDL(VHSIC Hardware Description Language) is a kind of HDL(Hardware Description Language), which is applied extensively. More and more electronic company and organization develop their system by using this language. This article will introduce how to use VHDL to develop a MCU that is compatible with MCS-51, including the decomposition of machine command, division of function model, the realization of each model, and so on. And among all, it will go into much greater detail on the subject of the realization of controller/decoder unit. key words: HDL, machine cycle, command cycle 第一章 绪论 §1.1 集成电路设计简介 1.1.1 集成电路发展简史 自1958年美国德克萨斯仪器公司(TI)发明集成电路(Intergrated Circuit—简称IC)后,随着硅平面技术的发展,二十世纪六十年代先后发明了双极型和MOS型两种重要的集成电路,它标志着由电子管和晶体管制造电子整机的时代发生了量和质的飞跃,创造了一个前所未有的具有极强渗透力和旺盛生命力的新兴产业集成电路产业。 回顾集成电路的发展历程,我们可以看到,自发明集成电路至今40多年以来,"从电路集成到系统集成"这句话是对IC产品从小规模集成电路(SSI)到今天特大规模集成电路(ULSI)发展过程的最好总结,即整个集成电路产品的发展经历了从传统的板上系统(System-on-board)到片上系统(System-on-a-chip)的过程。在这历史过程中,世界IC产业为适应技术的发展和市场的需求,其产业结构经历了三次变革。 第一次变革:以加工制造为主导的IC产业发展的初级阶段。 70年代,集成电路的主流产品是微处理器、存储器以及标准通用逻辑电路。这一时期IC制造商(IDM)在IC市场中充当主要角色,IC设计只作为附属部门而存在。这时的IC设计和半导体工艺密切相关。IC设计主要以人工为主,CAD系统仅作为数据处理和图形编程之用。IC产业仅处在以生产为导向的初级阶段。 第二次变革:Foundry公司与IC设计公司的崛起。 80年代,集成电路的主流产品为微处理器(MPU)、微控制器(MCU)及专用IC(ASIC)。这时,无生产线的IC设计公司(Fabless)与标准工艺加工线(Foundry)相结合的方式开始成为集成电路产业发展的新模式。 随着微处理器和PC机的广泛应用和普及(特别是在通信、工业控制、消费电子等领域),IC产业已开始进入以客户为导向的阶段。一方面标准化功能的IC已难以满足整机客户对系统成本、可靠性等要求,同时整机客户则要求不断增加IC的集成度,提高保密性,减小芯片面积使系统的体积缩小,降低成本,提高产品的性能价格比,从而增强产品的竞争力,得到更多的市场份额和更丰厚的利润;另一方面,由于IC微细加工技术的进步,软件的硬件化已成为可能,为了改善系统的速度和简化程序,故各种硬件结构的ASIC如门阵列、可编程逻辑器件(包括FPGA)、标准单元、全定制电路等应运而生,其比例在整个IC销售额中1982年已占12%;其三是随着EDA工具(电子设计自动化工具)的发展,PCB设计方法引入IC设计之中,如库的概念、工艺模拟 参数 转速和进给参数表a氧化沟运行参数高温蒸汽处理医疗废物pid参数自整定算法口腔医院集中消毒供应 及其仿真概念等,设计开始进入抽象化阶段,使设计过程可以独立于生产工艺而存在。有远见的整机厂商和创业者包括风险投资基金(VC)看到ASIC的市场和发展前景,纷纷开始成立专业设计公司和IC设计部门,一种无生产线的集成电路设计公司(Fabless)或设计部门纷纷建立起来并得到迅速的发展。同时也带动了标准工艺加工线(Foundry)的崛起。 第三次变革:"四业分离"的IC产业 90年代,随着INTERNET的兴起,IC产业跨入以竞争为导向的高级阶段,国际竞争由原来的资源竞争、价格竞争转向人才知识竞争、密集资本竞争。以DRAM为中心来扩大设备投资的竞争方式已成为过去。如1990年,美国以Intel为代表,为抗争日本跃居世界半导体榜首之威胁,主动放弃DRAM市场,大搞CPU,对半导体工业作了重大结构调整,又重新夺回了世界半导体霸主地位。这使人们认识到,越来越庞大的集成电路产业体系并不有利于整个IC产业发展,"分"才能精,"整合"才成优势。于是,IC产业结构向高度专业化转化成为一种趋势,开始形成了设计业、制造业、封装业、测试业独立成行的局面。IC设计企业则更加接近市场和了解市场,通过创新开发出高附加值的产品,直接推动着电子系统的更新换代;同时,在创新中获取利润,在快速、协调发展的基础上积累资本,带动半导体设备的更新和新的投入;IC设计业作为集成电路产业的"龙头",为整个集成电路产业的增长注入了新的动力和活力。 1.1.2 集成电路设计流程 现代集成电路设计的基本流程如下图所示: 从图中可以看出,集成电路设计过程是从顶向下的过程,其流程大致如下: 1.行为设计 硬件设计者根据客户的功能定义进行行为设计,对各个电路功能模块用硬件描述语言(HDL)完成行为级描述。 2.布局规划和优化、仿真 对上一步中完成的描述进行布局规划,在进行算法优化的同时,通常还有进行向RTL级描述的转换,使现有的EDA工具能够对布局规划的结果进行逻辑综合。 3.综合 综合(synthesis )的目标是将前面得到的硬件描述语言转换为与具体硬件相对应的网表文件。 4.逻辑设计与逻辑图输入 将网表文件与厂家工艺库相对应,将网表文件转换成真正的硬件连接关系。 5.布局布线 对上一步的硬件连接关系进行布局布线,这有点类似于在EDA设计中使用Protel进行PCB版的设计。 6.后仿真 对网表文件进行综合后仿真,看设计能否满足要求。 7.版图生成与验证 对布局布线生产的版图进行仿真验证。 8.芯片制造 将版图交付厂家进行芯片的流片生产。 1.1.3 集成电路设计方法 常用的集成电路设计方法有从顶向下(top-down)和从底向上(bottom-up)的设计方法。 ·从顶向下(top-down)设计方法 设计者根据系统内容,把系统划分为单元,然后再把每个单元划分为下一层次的单元,直到设计的最底层为止。 ·从底向上(bottom-up)设计方法 这种方法可以看作是从顶向下设计的逆向过程。设计者也是从系统级开始对设计进行逐次划分,但划分过程必须从存在的基本单元触发,设计的最底层是已经制造出来的单元或者是其他项目已开发好的单元以及可外购得到的单元。 §1.2 VHDL语言简介 1.2.1 硬件描述语言 随着电子技术的发展,集成电路的规模越来越大,复杂程度也越来越高。对于如此大规模的和负责程度的电路设计问题,传统的门级描述方法显得过于琐碎和难以管理。 硬件描述语言(Hardware Description Language, HDL)就是顺应这种情况而产生和发展起来的。它是一种能够以形式话方式描述电路结构和行为并用于模拟和综合的高级描述方式,具有类似于高级程序设计语言的抽象能力。 HDL的语法和语义定义都是为描述硬件的行为服务的,它可以自然的描述硬件中并行的、非的规的特性以及时间关系。一般认为,HDL应该具有以下能力: 能在希望的抽象层次上进行精确而简练的描述; 易于产生用户手册、服务手册等文件,以便多人配合工作; 在不同层次上都易于形成用于模拟和验证的设计描述; 在自动设计系统中(例如高层次综合、硅编译器等)可作为设计输入; 可以进行硬、软件的联合设计,消除硬、软件开发时间上的间隔; 易于修改设计和把相应的修改纳入设计文件中; 在希望的抽象层次上可以建立设计者与用户的通信界面。 1.2.2 VHDL语言 从HDL诞生之日起,各个EDA厂商和科研机构都在建立和使用自己的电路硬件描述语言。这些硬件描述语言各具特色,逐步成为描述硬件电路的重要手段。然而,随着HDL应用的逐步深入,人们发现,各种非标准HDL之间存在的差异已成为束缚设计者选择最佳的设计环境和进行相互交流的巨大障碍。因此,要求HDL标准化的呼声越来越高。 VHDL(VHSIC Hardware Description Language)是由美国国防部在20世纪70年代末提出的VHSIC(Very High Speed Integrated Circuit)计划的产物。它最初的设计思想是定义一种语言用来交换硬件设计数据,在开发过程中得到了计算机工业界、EDA工业界和集成电路生产厂商的支持,包容了现代硬件描述语言应具备的全部特征。1987年12月,IEEE(电气和电子工程师协会)正式接受VHDL作为国际标准(VHDL’87);1993年,又对VHDL作了若干修改,增加了一些功能(VHDL’93)。目前,VHDL’93的扩展工作扔在进行之中。 概括的说,VHDL具有以下主要优点: VHDL具有强大的功能,覆盖面广,描述能力强,可用于从门级、电路级直至系统级的描述、仿真和综合。VHDL支持层次话设计,可以在VHDL的环境下,完成从简练的设计原始描述,经过层层细化求精,最终获得可直接付诸生产的电路级或版图参数描述的全过程。 VHDL有良好的可读性。它可以被计算机接受,也容易被读者理解。用VHDL 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 写的源文件,既是程序又是文档,既是技术人员直接交换信息的文件,又可作为合同签约者之间的文件。 VHDL有良好的可移植性。作为一种已被IEEE承认的工业标准,VHDL事实上已成为通用的硬件描述语言,可以在不同的设计环境和系统平台中使用。 使用VHDL可以延长设计的生命周期。因为VHDL的硬件描述与工艺技术无关,不会因为工艺变化而使描述过时。与工艺技术有关的参数可通过VHDL提供的属性加以描述,工艺改变时,只需要修改相应程序中的属性参数即可。 VHDL支持对大规模设计的分解和已有设计的再利用。VHDL可以描述复杂的电路系统,支持对大规模设计进行分解,由多人、多项目组来共同承担和完成。标准化的规则和风格,为设计的再利用提供了有力的支持。 §1.3 MCS-51单片机简介 1.3.1 单片机的产生和发展 随着电子技术的发展,数字技术和计算机技术已渗透到了工业、农业、商业、教育、医疗、军事.娱乐等每一个领域以及生活中的每一个角落,其应用的广度和深度已经到了令人无不为之咋舌惊叹的地步!当今,工程技术人员在设计开发一个系统或一个新产品的时候,首先考虑的是如何应用计算机技术以提高市场竞争能力,计算机已经成为最重要的工具。尽管PC机的应用已相当普遍,但是,在工控领域、在日益追求小而精,轻而薄的自动化控制器月动化仪器仪表、家电产品等方面,PC机仍有所不相适宜。而工业控制、仪器仪表、家电产品等市场广阔,要求PC机技术与之相适应。 在这种情况下,单片机应运而生了。单片机(Micro Control Unit, MCU)以它的优异的控制功能,在工控领域、智能化仪器仪表系统等日益显示着强大的生命力。一小小的芯片(几个平方厘米)便具有了计算机的基本功能,从而使工控系统、仪器仪表、家电产品等向智能化方向产生了飞跃。也正是由于这种原因,从80年代以来,无论是教学科研领域,还是工程开发部门,学习单片机,应用单片机,新技术浪潮一浪高过一浪。单片机技术也由最初的8位发展到 16位和 32位(CPU信息处理能力甚至超过了 PC 80286),功能也由单一型发展到了丰富实用型。 单片机的发展大概经历了四个阶段: 第一阶段(1971~1974年):1971年11月,美国Intel公司首先设计出4位微处理器Intel 4004,并且配有随机存取存储器RAM,只读存储器ROM和移位寄存器等芯片,构成第一台MCS-4微型计算机。1972年4月Intel公司又研制成功了功能较强的8位微处理器,Intel 8008。在此期间,Fairchild公司也研制成功了F8微处理器。从此拉开了研制单片机的序幕。 第二阶段(1974~1978年):初级单片机阶段。以Intel公司的MCS-48为代表。这个系列的单片机集成有8位CPU、并行I/O口、8位定时/计数器。 第三阶段(1978~1983年):高性能单片机阶段。在这一阶段推出的单片机普遍带有串行口,有多级中断处理系统、16位定时器/计数器。片内RAM、ROM容量加大,寻址范围可达64K字节,有的片内还带有A/D转换器接口。这类单片机有Intel公司的MCS-51,Motorola公司的6801和Zilog公司的Z80等。 第四阶段(1983年~):8位单片机巩固发展和16位单片机推出阶段。此阶段的主要特征是一方面发展16位单片机及专用单片机,另一方面又不断完善高档8位单片机,改善其结构,以满足不同用户的需要。 1.3.2 Intel MCS-51单片机 在单片机发展过程中,Intel公司扮演了重要角色。MCS-51是Intel公司生产的其中一个单片机系列的名称。该系列单片机诞生于单片机发展的第三阶段,是在MCS-48的基础上推出的增强型产品。属于这一个系列的单片机芯片有许多,包括8031,8051,8751等等。 由于MCS-51单片机功能强大、应用方便,在小到中型应用场合常常见其身影。8051更是成为单片机领域的实际标准。80年代中期,Intel公司将8051的内核使用权以专利互换和出售的形式转给世界上许多著名的IC制造厂商,如PHILIPS、西门子、AMD、OKI、NEC、Atmel等,这样8051就变成有众多制造厂商支持的、发展出上百个品种的大家族。而随着硬件的发展,支持51系列的开发工具也越来越多,在编程语言的选择上也越来越灵活(如C、Basic等语言)。 §1.4 开发工具的选择 1.4.1 VHDL开发工具 随着VHDL应用的逐渐广泛,各个厂商的VHDL开发工具也越来越多。常用的有Altera公司的Max+Plus II,Quartus II,Aldec公司Active HDL,Xilinx公司的Foundation Series,Cadence公司的SPW等等。这些工具各有特点,各有优势。 1.4.2 Altera公司的Max+Plus II Altera 的MAX+PLUS II可编程逻辑开发软件,提供了一种与结构无关的全集成化设计环境,使设计者能对Altera的各种PLD系列方便地进行设计输入、快速处理和器件编程。MAX+PLUS II开发系统具有强大的处理能力和高度的灵活性,它的优点主要表有: ·与结构无关 MAX+PLUS II系统的核心Compiler(编译程序)支持从Classic到FLEX10K的Altera全部系列的PLD产品,提供与结构无关的PLD设计开发环境,具有强大的逻辑综合与优化功能。 ·全集成化 MAX+PLUS II的设计输入、处理和校验功能全部集成在统一的开发环境下,可以加快动态调试,缩短开发周期。 ·丰富的设计库 MAX+PLUS II提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑宏单元(Macro-Function),以及新型的参数化的巨单元(Maga-Function)。调用库单元进行设计,可以大大减轻设计工作量,设计周期成倍缩短。 缺点:由于MAX+Plus II主要是为Altera公司自己的AHDL语言设计的,对VHDL语言支持的不是太好,不少语法均不支持。 1.4.3 Altera公司的Quartus II Quartus II 是Altera公司的另一款可编程逻辑器件的开发工具,功能相当强大,并提供Nios软件,可快速设计软件CPU,帮助设计者加快可编程单芯片(SOPC)设计。Quartus II适用于Altera高容量可编程逻辑器件(PLD),包括APEXII器件系列。缺点:跟MAX+Plus II一样,Quartus II的缺点也是对VHDL语言支持不是太好。 1.4.4 Aldec公司的Active HDL Active HDL是Aldec公司的一款优秀的VHDL/Verilog开发工具。它功能强大,支持方框图(BDE)和有限状态机(FSM)的编辑,操作简单,使用方便。同时它提供了强大的时序仿真功能,并支持外挂软件进行逻辑综合、布局布线等。是进行前端开发的最好的工具之一。 1.4.5 其他辅助工具 在毕业设计中,还用到了其他一些开发工具,如Keil公司的Keil μVision等。Keil μVision是用来开发51系列单片机应用程序的一款工具,支持汇编、C语言编程,同时支持软件仿真,支持全速、单步调试,与单片机真正运行环境相差无几,而且可以很方便的观测单片机内各个寄存器的变化情况。 §1.5 本次毕业设计的意义及目标 1.5.1 毕业设计的意义 目前我国的信息产业正在迅猛发展,但作为其支撑的集成电路产业却还出于比较落后的状况。生存中向前发展的良性循环道路;我国目前生产的集成电路只能满足国内市场需求的20%,更重要的是,关系到我国信息安全和信息产业需求的关键集成电路,如计算机的核心芯片、CPU、光线通信系统中的高速公路、Internet的网关网卡电路、多媒体中的信息处理电路等,都几乎是100%地从国外进口地。这无疑极大地威胁这我国信息网络乃至整个国家的安全;制约着我国微电子行业乃至整个信息行业的发展;限制着我国微电子产业在国内外市场上的竞争力。 在1999年8月20日《中共中央国务院关于加速技术创新,发展高科技,实现产业化的决定》中指出:“突出高新技术产业领域的自主创新,培养新的经济增长点。在电子信息特别是集成电路设计与制造、网络及通信、计算机软件、数字化电子产品等方面――加强高技术创新,形成一大批拥有自主知识产权、具有竞争有事的高新技术产业。”这里集成电路设计与制造被放在电子信息领域高技术创新的第一位。根据这一精神,通信、计算机和多媒体家电等集成电路的设计和制造将被科技部纳入“十五”高科技和公关的中大课题;系统芯片基础研究将列为“自然科学基金”“十五”计划的优先资助领域;微电子电路设计被信息产业部列为我国“十五”规划的重点发展方向。所有的这一切,都预示着一场集成电路设计与制造的大战役即将在我国吹响进军号。 广东省政府同样对集成电路设计给予了充分的重视,并且在华南理工大学建立了广东集成电路设计与培训中心。身为华工电子与信息工程系的一分子,必须掌握集成电路设计的一般方法,争取以后为我国我省的集成电路发展贡献一份力量。 1.5.1 毕业设计的目标 本次毕业设计的目标,是利用VHDL语言来开发与8051单片机兼容的IP核。并利用Altera公司的FPGA芯片进行硬件验证和进行各种兼容性测试。 由于8051单片机内部采用模块结构,因此本次设计任务也按照各个不同模块来进行划分。本报告将着重介绍8051IP核模块的划分以及译码器部分的实现。 本次毕业设计的目标是通过设计一个与8051单片机完全兼容的IP内核,初步掌握集成电路设计的一般方法,了解集成电路设计的流程,为日后设计更复杂的IP内核做好准备。 第二章 系统总体规划与构思 §2.1 MCS-51单片机的总体结构 2.1.1 MCS-51单片机硬件结构的特点 MCS-51单片机的基本组成如下: 1、一个8位的微处理器。 2、片内数据存储器RAM(128B/256B),用以存放可以读/写的数据。 3、片内程序存储器ROM/EPROM(4KB/8KB),用以存放程序,数据和 表格 关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载 。 4、四个8位并行I/O口P0-P3,每个口既可以用作输入,也可以用作输出。 5、两个定时器/计数器,每个都可以设成对外计数和内定时方式。 6、五个中断源的中断控制系统。 7、一个全双工UART(通用异步接收发送器)的串行I/O,用于串行通讯。 2.1.2 MCS-51单片机的引脚描述 MCS-51系列单片机通常采用40引脚的双列直插封装(DIP方式)。其管脚排布如图2.1。 图2.1 下面按其引脚功能分为四部分叙述这40条引脚的功能。 1. 主电源引脚Vcc和Vss Vcc-(40脚)接+5V电压; Vss-(20脚)接地。 2. 外接晶体引脚XTAL1和XTAL2 XTAL1(19脚)接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。XTAL2(18脚)接外部晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。 3.控制或与其他电影复用引脚RST/VPD、ALE/PROG,PSEN和EA/VPP ①RST/VPD(9脚):当振荡器运行时,在此引脚上出现两个机器周期的高电平将使单片机服务。Vcc掉电期间,此引脚可接上备用电源,以保持内部RAM的数据不丢失。 ②ALE/PROG(30脚):当访问外部存储器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。 ③PSEN(29脚):此脚的输出是外部程序存储器的读选通信号。在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。 ④EA/VPP(31脚):当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH时,将自动转向执行外部程序存储器内的程序。 4.输入/输出(I/O)引脚P0、P1、P2、P3 ①P0口(39脚~32脚):是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用。 ②P1口(1脚~8脚):是8位准双向I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。 ③P2口(21脚~28脚):是8位准双向I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程序验证期间,它接受高8位地址。 ④P3口(10脚~17脚):是8位准双向I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。 作为第一功能使用时,作为普通I/O口用,功能和操作方法与P1口相同。 作为第二功能使用时,各引脚定义如表2-1所示。 表2-1 P3各口的第二功能定义 口线 引脚 第二功能 P3.0 10 RxD(串行输入口) P3.1 11 TxD(串行输出口) P3.2 12 INT0(外部中断0) P3.3 13 INT1(外部中断1) P3.4 14 T0(定时器0外部输入) P3.5 15 T1(定时器1外部输入) P3.6 16 WR(外部数据存储器写脉冲) P3.7 17 RD(外部数据存储器读脉冲) 2.1.3 MCS-51片内总体结构 MCS-51片内总体结构的详细框图如图2.2所示。它主要由九个部件组成,这九个部件是:1个8位的中央处理器;4KB/8KB的只读存储器;128字节/256字节的数据存储器(RAM);32条I/O线;2个或3个定时器/计数器;1个具有5个中断源、2个优先级的中断嵌套结构;用于多处理机通信、I/O扩展或全双工UART(通用异步接收发器)的串行口;特殊功能寄存器(SFR);以及一个片内振荡器和时钟电路。这九个部件都是通过片内单一总线连接而成,其基本结构依然是通用CPU加上外围芯片的结构模式。但在功能单元的控制上却有了重大变化,采用了特殊功能寄存器(SFR)的集中控制方法。 图2.2 图2.3是简化的结构框图。 图2.3 §2.2 MCS-51单片机的指令分解 2.2.1 CPU时序 一条指令可以分解为若干基本的微操作。所谓微操作,通常是指CPU中的寄存器级电路单元在某一单一的时间控制点(时钟沿或有效电平)上能够完成的操作。在执行程序时,单片机指令经过指令译码,被翻译成一系列微操作控制信号,控制相应的单元完成一定微操作。而这些微操作所对应的脉冲信号,在时间上有严格的先后次序,这些次序就是计算机的时序。 时序是非常重要的概念,它指明了单片机内部以及内部与外部互相联系所遵循的规律。 图2.4表明了各种周期的相互关系。 图2.4 ① 振荡周期:指为单片机提供定时信号的振荡源的周期。 ② 时钟周期:又称状态周期或S周期。因为时钟发生器是上述的2分频触发器,所以它是振荡周期的两倍,时钟周期被分为两个节拍,即P1节拍和P2节拍。在每个时钟的前半周期,P1信号有效,这时通常完成算术逻辑操作;在每个时钟的后半周期,P2信号有效,内部寄存器与寄存器间的传输一般在此状态发生。 ③ 机器周期:一个机器周期由6个状态(12个振荡脉冲)组成,即6个时钟周期,12个振荡周期。可依次表示为S1P1(状态1拍1)、S1P2(状态1拍2)、……、S6P1(状态6拍1)、S6P2(状态6拍2),每个节拍持续一个振荡周期,每个状态持续2个振荡周期。可以用机器周期把每一条指令划分成若干个阶段,每个机器周期完成某些规定操作。 ④ 指令周期:是执行一条指令所占用的全部时间,一个指令周期通常含有1~4个机器周期。 在MCS-51指令系统中,指令长度为1~3字节,除MUL(乘法)和DIV(除法)指令外,单字节和双字节指令都可能是单周期和双周期的,3字节指令都是双周期的,乘法指令为4周期指令。 2.2.2 指令分解 通过对单片机指令的具体分解,我们可以详尽的了解单片机的整个运作过程,了解各个寄存器在指令执行过程中所起的作用,以及数据在各个时间上的流向等。这对模块的划分、有限资源的重复利用以及各个模块的具体实现均有指导性的作用。 MCS-51的指令从功能上来划分,大概可以分成算术操作类指令、逻辑操作类指令、数据传送类指令、布尔变量操作类指令和控制程序转移类指令等5大类指令。这些指令从长度上看有单字节、双字节和三字节之分,从执行时间上看有单周期、双周期和4周期指令的不同。分解指令,必须找出各个指令的共同点,以尽量少而合理的微操作来实现指令的具体执行过程。 对所有的指令来说,前6个状态是基本相同的,即先从指令ROM中读取指令操作码,经过两级译码,形成微操作控制信号,同时进行数据地址译码,形成操作数有效地址。在第4个状态,如果是多字节指令,要从ROM中读取指令的第二字节;如果是间接寻址,则要形成新的数据有效地址。第5个状态进行指令执行的第1步骤。第6个状态协会结构。对于单周期指令,在此执行完毕,返回第1状态,开始执行下一条指令;否则,还要经过下面的状态,完成指令的执行。指令执行过程的状态转换见图2.5。 图2.5 这里以算术操作类指令ADD A, Rn为例,详细介绍指令的具体分解: 指令名称 ADD A, Rn 机器码 00101rrr 字节数 1 指令周期 1 状态 S1P1 在s1p1的下降延,ALE为高,将ROM相应地址处内容锁存到指令寄存器IR S1P2 程序计数器加一,同时把ACC值送TMP2 S2P1 将IR中指令分解出微操作码,程序计数器的值更新到PC中去。S2p1的下降延ALE为低 S2P2 读psw(4)和psw(3),同时取IR中最低3位,算出RAM地址值:(RS1RS0)×8+r S3P1 根据得出的RAM地址值从对应RAM读 读出数据到TMP1 S3P2 把PC值载入ROM地址锁存器 S4P1 在s4p1的下降延,ALE为高,将ROM相应地址处内容锁存倒指令寄存器IR S4P2 由于是单字节指令,故程序计数器不再加一 S5P1 程序计数器的值更新到PC。在s5p1的下降延,ALE恢复为低 S5P2 送op_add到ALU,把TMP1和TMP2的值相加 S6P1 相加结果送回ACC S6P2 把PC值载入ROM地址锁存器 §2.3 各部分模块的初步划分 2.3.1 总体设计思想 通过对单片机指令的分解,我们对单片机的整个运作过程有了比较深入的认识。由于单片机指令的执行过程是一个周而复始的取指令、分析指令和执行指令的过程,微处理器可以看成是典型地带有数据路径地有限状态机,其中时钟电路与控制单元组合构成了有限状态机,指令的运算在数据路径中进行,外围电路构成CPU的协处理器。 确定系统状态以后,可以着手编写芯片的行为级描述及进行模块的划分。这里遵循的方法是从顶向下(top-down)的方法。即根据系统功能划分好各个模块;然后对各个模块进行具体代码的编写,并对各个模块进行单独的功能测试;最后将完成的各部分模块统一、连接起来进行总的调试。 2.3.2 各模块的划分 在8051单片机内核中,各元件间通过总线来传递数据和控制信息,并且各元件之间有严格的时序关系;为了充分的利用硬件资源,指令将被划分为各种微操作,并且要使各指令之间拥有共同的微操作,以降低译码的复杂度。因此,在本51内核的设计中,将按照由顶向下的设计方法,用人工的方法对芯片进行划分。划分的过程分两个步骤,首先把芯片分割为控制器和数据路径(控制器如译码器Decoder,数据路径如ALU、RAM等),再进一步细划为一系列寄存器级的功能模块。 第一步划分的目的在于利用已经验证过的算法,把芯片的控制和数据运算部分分离。分离后的结果如图2.6所示。对控制部分来讲,分离后的模型应能够对确定指令发出缺点的微操作绪论;对数据路径来讲,要确定运算自用分配,也就是把执行具体指令的微操作绪论分配到一定的硬件资源上,并能够根据微操作控制信号的状态完成相应的操作。 图2.6 第二步则根据8051单片机所具备的功能以及其内部实际模块的划分为寄存器级单元,同时确定芯片的体系。本次毕业设计的8051内核从功能上主要划分为ROM模块(ROM_Controler)、译码器模块(Decoder)、RAM模块(RAM_Controler)、计数器模块(Timer)、中断控制模块(Interrupt)、通用异步接收/发送控制器模块(UART)、算术运算单元控制模块(ALU_Controler)等组成。 内部数据交换可以采用信号赋值形式或者采取总线结构。考虑到以后51内核功能扩展的需要,以及让模块之间的关系更加清晰,决定采用总线结构作为内部数据交换的形式。 译码方式也有集中译码和分别译码两种备选 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。一般地讲,集中译码方案要比分别译码方案要好。首先,从功能划分的角度来看,集中译码使得电路复杂性降低,电路及其模型直观易懂,有利于电路自动综合;其次,当需要给电路增加新功能时,若采用集中译码方案,只需对硬件作较小的改动就可以实现。但是,对于较简单的硬件,采用分别译码方案,电路规模要小一些。 综上所述,本次设计采用集中译码和总线结构的方式来构建51单片机内核。其结构图如图2.7: 图2.7 2.3.3 各模块的简单说明 ·ROM模块: 本模块的主要负责从ROM中取得指令代码/操作数。模块中的寄存器包括程序计数器PC和地址寄存器AddrREG及内部ROM(4K×8bit)。 ·译码/控制模块(Decoder): 产生系统内部的同步信号。 在每个S1P2时译码并把该指令的各个时刻的控制信号存入寄存器,再在接下来的每个时刻把相应的控制信号放到控制总线上(指令从S1P2开始执行),控制各个模块协调工作,完成指令操作。 在每个S1P1时刻检查如果有中断申请,则判断如果当前指令不是RETI (如果是访问IE或IP的话,由中断部分控制等到下一条指令开始执行后再申请中断)则响应该中断,在接下来的3个指令周期内把PC压栈,和跳到相应的入口处。 ·RAM模块: 模块中包括128字节的RAM和堆栈指针SP。 复位时把堆栈指针SP置为07H。一个8bit+1bit的加法器和一个8bit-1bit的减法器。完成RAM所具有的功能。 ·定时/计数器模块: 模块中包括寄存器TH0,TH1,TL0,TL1,TMOD,TCON。 其实现的功能包括完成4种工作方式的定时/计数器;每个S5P2检查外部中断;向中断控制部分提供4个中断申请标志。 ·中断控制模块: 模块中包括寄存器IE,IP。 实现功能包括负责处理中断的开放、禁止及优先级判断,是否响应中断;对于已经禁止的中断,如果发现有中断申请标志,则发出清除该中断标志信号;向译码/控制器发中断申请应该在S6P2时刻进行;如果本指令周期内做了IE或IP的修改操作则等到下一个指令周期开始后才开始向译码/控制器申请响应中断。 ·通用异步发送/接收模块(UART): 模块中包括寄存器串行控制寄存器SCON,特殊功能寄存器PCON和发送缓存器SBUF。 主要功能是进行串行通讯。 ·ALU控制模块: 模块中包括A寄存器、B寄存器、暂存器1(TMP1)、暂存器2(TMP2)、标志寄存器(PSW)。 主要实现的功能是进行算数操作、逻辑运算、布尔变量操作以及在跳转指令中进行数值比较和pc值相加操作。 ·P口锁存器: 包括8051的P0到P3端口。 ·DPTR: 模块中包括DPTR寄存器。 ·数据/地址暂存器: 用于暂存数据或地址总线上的数据。 第三章 译码/控制模块的实现 §3.1 译码/控制模块设计思想 3.1.1模块功能 译码/ 控制模块是芯片的核心部分。它产生单片机正常运转所需的各种内部信号和微操作。它控制着单片机的取指令、译码和执行的全过程,同时控制着数据在总线上的流向。 从时序上来看,在每个S1P2时译码并把该指令的各个时刻的控制信号存入寄存器,再在接下来的每个时刻把相应的控制信号放到控制总线上(指令从S1P2开始执行),控制各个模块协调工作,完成指令操作。 在每个S1P1时刻检查如果有中断申请,则判断如果当前指令不是RETI (如果是访问IE或IP的话,由中断部分控制等到下一条指令开始执行后再申请中断)则响应该中断,在接下来的3个指令周期内把PC压栈,和跳到相应的入口处。 3.1.2设计思想 在控制/译码模块的设计过程中,我们采用的是细分模块,尽量重复利用的原则,使资源可以重复利用。例如,ADD A,Rn这个指令,尽管由于n的不同而使指令的执行过程有所不同。但如果为每条指令都单独进行译码,单独分配一块资源,那么将造成资源的很大浪费。我们通过前面对指令的分解,尽量找出这些指令的公共部分,在编程时反复利用可以重复使用的资源。 在设计过程中,我们遇到了一个“多驱动源”的问题。这个问题的产生是由于在VHDL语言里,不能对同一个变量在不同的process里进行赋值,否则编译的时候将会出错。为了避免这个问题,我们采用了利用时钟信号进行触发的办法。 这个办法的原理是引入专门的控制信号(长度为24或48位矢量),在S1P2译码过程中,根据指令的类别对这些信号赋值。然后在接下来的周期里,把这些信号逐位逐位输出到控制线上。其他模块在时钟的下降延对这些控制线进行采样,对采样值做出判断并作出相应的动作。 §3.2 译码/控制模块的实现过程 3.2.1接口及控制信号 译码/控制模块的信号可以分为输入信号和输出信号两部分。其中输入信号如下: ·复位信号(RST):系统复位信号,低电平有效; ·时钟信号(CLK):系统时钟,下降沿有效; ·指令代码(InstrCode):来自ROM模块的指令代码; ·中断申请(IRQ) :来自中断模块的中断申请信号; 输出信号如下: ·地址总线(AddrBus); ·PC_AR:提供给ROM控制器信号; ·RC_CtrlSig:ROM控制器控制的控制信号; ·MOVXf:指令为MOVX时有效; ·ToAddrBus:提供给ROM控制器信号,将ROM内容输出到地址总线; ·ToDataBus:提供给ROM控制器信号,将ROM内容输出到数据总线; ·Ex_RW_Flag:外部数据存贮器读写标志,1为读,0为写 ·push:提供给RAM控制器的信号,压栈信号; ·pop:提供给RAM控制器的信号,出栈信号; ·subSP:提供给RAM控制器的信号,SP-1信号; ·addSP:提供给RAM控制器的信号,SP+1信号; ·RD:提供给RAM控制器的信号,对RAM单元进行读操作; ·WR:提供给RAM控制器的信号,对RAM单元进行写操作; ·ByteBit:提供给RAM控制器的信号,对字节/位操作进行选择。低电平时为位操作,高电平时为字节操作; ·RETI_Instr:中断返回信号; ·DPTR_CtrlSig:DPTR控制信号; ·AtoTMP2:提供给ALU的信号,使Acc寄存器数据送入TMP2; ·BtoTMP1:提供给ALU的信号,使B寄存器数据送入TMP1; ·BUStoTMP1:提供给ALU的信号,将数据总线上的数据读入TMP1; ·BUStoTMP2:提供给ALU的信号,将数据总线上的数据读入TMP2; ·ALUtoBUS:提供给ALU的信号,将ALU计算结果送至数据总线; ·ALUtoA:提供给ALU的信号,将ALU计算结果送至Acc寄存器; ·ALUtoB:提供给ALU的信号,将ALU计算结果送至B寄存器; ·FetchBank:提供给ALU的信号,为取段地址信号; ·Funcode:提供给ALU的信号,ALU根据Funcode来执行相应的算术、逻辑等运算。 3.2.2 译码/控制模块框架结构 在译码/控制模块的VHDL程序中,分为库Libraty、实体Entity和结构体Architecture三大部分。 在实体entity中是对各个端口的定义: entity DecoderAndController is port( RST : in std_logic; CLK : in std_Logic; IRQ : in std_logic; InstrCode : in std_Logic_VECTOR(7 downto 0); TMBus : out std_Logic_VECTOR(3 downto 0); AddrBus : out sTD_LOGIC_VECTOR(7 downto 0); -- ROM 控制器部分 PC_AR : out std_Logic; RC_CtrlSig : out std_Logic_Vector(2 downto 0); MOVXf : out std_Logic; ToAddrBus : out std_Logic; ToDataBus : out std_Logic; Ex_RW_Flag : out std_Logic; -- 外部数据存贮器读写标志,1为读,0为写 -- RAM 控制器部分 push : out std_Logic; pop : out std_Logic; subSP : out std_Logic; addSP : out std_Logic; RD : out std_Logic; WR : out std_Logic; ByteBit : out std_Logic; Save : out std_logic; Load : out std_logic; -- Interrupt 控制器部分 GetIntEntrance : out std_Logic; RETI_Instr : out std_Logic; -- DPTR DPTR_CtrlSig : out std_Logic_Vector(1 downto 0); -- ALU AtoTMP2 : out std_Logic; BtoTMP1 : out std_Logic; BUStoTMP1 : out std_Logic; BUStoTMP2 : out std_Logic; ALUtoBUS : out std_Logic; ALUtoA : out std_Logic; ALUtoB : out std_Logic; FetchBank : out std_Logic; Funcode : out std_Logic_Vector(3 downto 0) ); end DecoderAndController; 在结构体architecture里定义了一些辅助信号: architecture DECODERANDCONTROLLER of DecoderAndController is type Timing_Name is (Reset, C1S1P1, C1S1P2, C1S2P1, C1S2P2, C1S3P1, C1S3P2, C1S4P1, C1S4P2, C1S6P1, C1S5P2, C1S5P1, C1S6P2, C2S4P2, C2S4P1, C2S3P2, C2S3P1, C2S2P2, C2S2P1, C2S1P2, C2S1P1, C3S2P2, C3S2P1, C3S1P2, C3S1P1, C2S6P2, C2S5P1, C2S5P2, C2S6P1, C3S6P2, C3S5P1, C3S5P2, C3S6P1, C3S4P2, C3S4P1, C3S3P2, C3S3P1, C4S4P2, C4S4P1, C4S3P2, C4S3P1, C4S2P2, C4S2P1, C4S1P2, C4S1P1, C4S6P2, C4S5P1, C4S5P2, C4S6P1); signal Time_State: Timing_Name; signal bRETI: std_Logic; -- RETI指令标志,当执行RETI指令时为低电平 -- ROM控制器部分控制信号寄存器 signal sMOVXf : std_Logic; -- MOVX指令标志 signal sPC_AR : std_Logic_Vector(2 downto 0); signal sRC_CtrlSig0 : std_Logic_Vector(23 downto 0); signal sRC_CtrlSig1 : std_Logic_Vector(23 downto 0); signal sRC_CtrlSig2 : std_Logic_Vector(23 downto 0); -- DataBus signal sDataBus0 : std_logic_vector(23 downto 0); signal sDataBus1 : std_logic_vector(23 downto 0); signal sDataBus2 : std_logic_vector(23 downto 0); signal sDataBus3 : std_logic_vector(23 downto 0); signal sDataBus4 : std_logic_vector(23 downto 0); signal sDataBus5 : std_logic_vector(23 downto 0); signal sDataBus6 : std_logic_vector(23 downto 0); signal sDataBus7 : std_logic_vector(23 downto 0); -- RAM控制器部分控制信号寄存器 signal sWR: std_logic_vector(23 downto 0); signal sRD: std_logic_vector(23 downto 0); signal sByteBit: std_logic_vector(23 downto 0); signal sPop: std_logic_vector(23 downto 0); signal sSubsp: std_logic_vector(23 downto 0); signal sPush: std_logic_vector(23 downto 0); signal sAddsp: std_logic_vector(23 downto 0); signal KeepAdd: std_logic_vector(2 downto 0); -- ALU signal sFetchBank: std_logic_vector(23 downto 0); signal sAtotmp2: std_logic_vector(23 downto 0); signal sBtotmp1: std_logic_vector(23 downto 0); signal sBustotmp1: std_logic_vector(23 downto 0); signal sBustotmp2: std_logic_vector(23 downto 0); signal sAlutobus: std_logic_vector(23 downto 0); signal sAlutoa: std_logic_vector(23 downto 0); signal sAlutob: std_logic_vector(23 downto 0); signal sFuncode0: std_logic_vector(23 downto 0); signal sFuncode1: std_logic_vector(23 downto 0); signal sFuncode2: std_logic_vector(23 downto 0); signal sFuncode3: std_logic_vector(23 downto 0); 其中,Timing_Name是对各个状态的类型定义,考虑到MCS-51指令中最长的指令周期是4各机器周期,所以这里从C1S1P1开始一直定义到C4S6P2。 sRC_CtrlSig0~sRC_CtrlSig2为专门控制信号,均为24位长。在C1S1P2译码过程中,译码/控制器根据指令的类型对这几个信号赋值。在接下来的每个时钟下降延,将这3个信号逐个逐个取出,组合在一起形成CtrSig信号。 sFuncode0~sFuncode0:与sRC_CtrlSig0~sRC_CtrlSig2,用于组合形成Funcode。 程序的开始阶段对一些信号进行初始化操作。在S1P1里检测中断,同时读进ROM中的指令。S1P2开始进行译码,下面是译码过程(以NOP和ADD A, R0指令为例): case InstrCode is -- 译码开始 when "00000000" => -- NOP Instr_Cycles:=3; -- 单周期指令 sPC_AR<="111"; PC_AR<='1'; sRC_CtrlSig0<="111111111111111111111111"; sRC_CtrlSig1<="111111111111111111111111"; sRC_CtrlSig2<="111111111111111111111111"; RC_CtrlSig<="100"; … when "00101000" => --add a, r0 Instr_Cycles:=3; -- 单周期指令 sPC_AR<="111"; PC_AR<='1'; sRC_CtrlSig0<="111111111111111111111111"; sRC_CtrlSig1<="111111111111111111111111"; sRC_CtrlSig2<="111111111111111111111111"; RC_CtrlSig<="100"; FetchBank<='0'; KeepAdd<="001"; AddrBus<="ZZZZZ000"; RD<='0'; sFetchBank<="011111111111111111111111"; sRD<="011111111111111111111111"; sBustotmp1<="011111111111111111111111"; sAtotmp2<="011111111111111111111111"; sFuncode0<="010000000000000000000000"; sFuncode1<="000000000000000000000000"; sFuncode2<="000000000000000000000000"; sFuncode3<="000000000000000000000000"; sAlutoa<="110111111111111111111111"; … end case; 接下来是执行过程: when C1S3P1 => Time_State <= C1S3P2; -- ROM_Controller RC_CtrlSig(0)<=sRC_CtrlSig0(21); RC_CtrlSig(1)<=sRC_CtrlSig1(21); RC_CtrlSig(2)<=sRC_CtrlSig2(21); -- RAM_Controller if keepadd(2)='1' then AddrBus<="ZZZZZZZZ"; end if; -- ALU FetchBank<=sFetchbank(2); RD<=sRD(2); Bustotmp1<=sBustotmp1(2); Atotmp2<=sAtotmp2(2); Funcode(0)<=sFuncode0(2); Funcode(1)<=sFuncode1(2); Funcode(2)<=sFuncode2(2); Funcode(3)<=sFuncode3(2); Alutoa<=sAlutoa(2); 到这里,操作码以及形成。再下面将是具体的执行过程(从略)。 以上为对控制/译码模块工作过程的概述。 第四章 总结与展望 §4.1 阶段成果和心得 本次毕业设计历时半年,题目是开发一个与8051单片机完全兼容的IP内核。由于工程比较庞大,我们几个98级的同学和另外几位研究生师兄,在贺前华教授和韦岗教授的指导下进行这个51内核的编写。通过这半年的学习和实验,我们基本上完成了模块的划分、各部分模块的程序的编写工作,并对已完成的程序进行了测试和软件上的仿真。 通过这次毕业设计,我对集成电路的开发过程有了比较深入的了解,同时通过对Active HDL、Quartus II、SPW等开发软件的学习,应用VHDL语言进行系统开发的能力也有了很大的提高。而与师兄和同学们的合作过程中,也使我认识如何以一个团队进行项目开发、如何更有效的进行意见交流和信息共享。总之,这几个月的毕业设计使我获益非浅。 最后,我要对指导老师贺前华教授和韦岗教授表示衷心的感谢,他们耐心的指导和严谨的治学态度让我深深感动。同时,我也要对几位师兄和同学的帮助表示衷心的感谢! §4.2 不足与展望 4.2.1 存在的不足 由于这次设计时间很紧,我们的设计还存在如下一些问题有待解决: 1. 虽然各部分模块已基本完成,但仍未进行整体连接和综合调试; 2.在设计过程中只是采用软件仿真和调试,并未考虑真正硬件上的区别,也未能下载到FPGA上面进行调试; 3.由于最终仿真时候使用的芯片是Altera公司的APEXII芯片,这需要使用到Altera公司的Quartus II软件。而我们在设计过程中采用的方式是Active HDL + FPGA Express的开发方式,用这种方式生成的网表在Quartus II中不能很好的得到支持。而要在Quartus II中布局布线通过的话,还需要对程序进行修改。 4.2.2 改进意见 在接下来的阶段需要继续完善的工作,我觉得主要有以下几点: 1. 修改现有的程序,使之能在Quartus II中编译通过; 2.完善测试手段。在软件测试上需要尽量大的覆盖每种可能出现的状况,在硬件测试上最好能做专门的测试电路对下载以后的FPGA进行测试。 附录 参考文献 [1] 李华等:《MCS-51系列单片机实用接口技术》,北京航空大学出版社,1993年8月。 [2] 王志华 邓仰东:《数字集成系统的结构话设计与高层次综合》,清华大学出版社,2000年7月。 [3] 林敏 方颖立:《VHDL数字系统设计与高层次综合》,电子工业出版社,2002年1月。 [4] 潘松 王国栋:《VHDL实用教程》,电子科技大学出版社,2000年3月。 [5] 中国集成电路网:http://www.chinaicip.com [6] 可编程逻辑器件网:http://www.fpga.com.cn PAGE 4 _1080071536.bin
本文档为【开发一个与8051单片机完全兼容的IP内核】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_484316
暂无简介~
格式:doc
大小:284KB
软件:Word
页数:0
分类:生产制造
上传时间:2018-09-04
浏览量:8