毕业设计(论文)MCS51单片机CPU核的设计与仿真.doc

上传人:仙人指路1688 文档编号:3976708 上传时间:2023-03-30 格式:DOC 页数:36 大小:441.50KB
返回 下载 相关 举报
毕业设计(论文)MCS51单片机CPU核的设计与仿真.doc_第1页
第1页 / 共36页
毕业设计(论文)MCS51单片机CPU核的设计与仿真.doc_第2页
第2页 / 共36页
毕业设计(论文)MCS51单片机CPU核的设计与仿真.doc_第3页
第3页 / 共36页
毕业设计(论文)MCS51单片机CPU核的设计与仿真.doc_第4页
第4页 / 共36页
毕业设计(论文)MCS51单片机CPU核的设计与仿真.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《毕业设计(论文)MCS51单片机CPU核的设计与仿真.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)MCS51单片机CPU核的设计与仿真.doc(36页珍藏版)》请在三一办公上搜索。

1、浙 江 理 工 大 学毕业论文(设计)诚信声明我谨在此保证:本人所写的毕业论文(设计),凡引用他人的研究成果均已在参考文献或注释中列出。论文(设计)主体均由本人独立完成,没有抄袭、剽窃他人已经发表或未发表的研究成果行为。如出现以上违反知识产权的情况,本人愿意承担相应的责任。声明人(签名):年 月 日摘 要MCS-51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件,是业界广泛使用的单片机系列。基于FPGA平台的8051单片机CPU核与传统MCS-51单片机完全兼容,但速度约为传统单片机的 20倍,且在FPGA内可轻松的集成许多高性能

2、系统功能,这将使系统的设计效率和系统性能获得极大的提高,这也是现代电子设计技术的发展方向。本课题用硬件描述语言设计MCS-51 CPU核,从CPU的总体结构到局部功能的实现采用了自顶向下的设计方法和模块化的设计思想,利用FPGA,设计实现了八位CPU核。本设计的CPU兼容51指令,在时钟频率和指令的执行效率指标上均优于传统的MCS-51CPU。本设计以硬件描述语言代码形式存在,可与任何综合库、工艺库以及FPGA结合开发出用户需要的固核和硬核,可读性好,易于扩展使用,易于升级,比较有实用价值。本设计通过FPGA验证。关键字:Verilog HDL; CPU; FPGAABSTRACTMCS-51

3、 MCU is a single chip integrated CPU, RAM, ROM, timer / counters and multi-function I / O such as a computers basic features required, is the industrys widely used microcontroller series. 8051 FPGA-based CPU platform with the traditional core is fully compatible with MCS-51 microcontroller, but the

4、speed is about 20 times that of traditional single chip, and the FPGA can be easily integrated within a number of high-performance system functions, which will enable the design of the system efficiency and system Be greatly improved performance, which is the development of modern electronic design

5、direction. The issue with the hardware description language design MCS-51 CPU core, from the CPU to the local function of the overall structure of the realization of using top-down design and modular design, the use of FPGA, design and implementation of the eight CPU cores. The CPU model in this pap

6、er can execute the MCS-51MCU assemble language instruction sets, and is better than the traditional MCS-51 MCU on both clock frequency and the execution efficiency of the instruction. This design was existed in a form of HDL source code,which can be reused in many SoC designsThis model can be read e

7、asily, updated easily and extended freely, so it has a practical value in SoC designThis design was implemented on FPGA. Keywords: Verilog HDL ; CPU ; FPGA目 录摘 要Abstract第1章 绪论.11.1选题背景11.2国内外发展及现状1 1.3课题的主要内容2第2章CPU的结构及设计.42.1 CPU的简介42.2 CPU的结构42.2.1 时钟发生器.4 2.2.2 指令寄存器.52.2.3 累加器.62.2.4 算术运算器.62.2.

8、5 数据控制器.72.2.6 地址多路器82.2.7程序计数器82.2.8 状态控制器.92.2.9 外围模块.11第3章 CPU的功能.133.1 CPU的操作.13 3.1.1 系统的复位和启动操作.13 3.1.2 总线读操作.13 3.1.3 总线写操作133.2 CPU的寻址方式和指令集 143.3 汇编14第4章 CPU的仿真和验证.164.1 CPU模块的仿真 164.2 CPU模块的综合 18 4.3 CPU模块的优化和优局布线 25第5章 总结和展望.27参考文献.28致 谢29附 录30第1章 绪论1.1选题背景单片机自从被推出后开始迅速发展,应用领域也在不断扩大,现己成为

9、微型计算机的重要分支,单片机处理数据的能力在不断提高,速度也越来越快,长期以来被广泛的应用在各领域。 同时随着集成电路和计算机技术的飞速发展,电子设计自动化(EDA)以计算机的硬件和软件为基本的工作平台,已经发展成为可以代 替设计者完成电子系统设计的重要工具。其中FPGA是一种新兴的可编程逻辑器件(PLD),与其它可编程逻辑器件(PLD)相比,具有更高的密度、更快的工作速度和更大的编程灵活性。FPGA是一种新兴的可编程逻辑器件,可以取代现有的全部微机接口芯片,实现微机系统中的存储器、地址译码等多种功能,具有更高的密度、更快的工作速度和更大的编程灵活性,被广泛应用于各种电子类产品中。单片机具有性

10、能价格比高、功能灵活、易于人机对话、良好的数据处理能力特点;FPGA则具有高速、高可靠以及开发便捷、规范等优点。以此两类器件相结合的电路结构会有很多的发展空间。基于FPGA的高密度、高速度、现场可编程的能力和单片机强大的数据处理功能设计的CPU采用了与传统单片机不同的实现架构,利用FPGA的边沿触发的特点,单周期单指令,因而无论在时钟频率还是在汇编指令的执行效率上都明显优于传统的MCS-51单片机。这个设计的扩展接口控制器部分很好地扩充了传统单片机的功能,而且由于具有 较好的可移植性,可以只利用扩展接口控制器部分实现对现有的单片机进行升级,节约更换高性能CPU而带来的产品提升,达到适应新的要求

11、。目前以硬件描述语言所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。1.2国内外发展及现状微控制器简称MCU,又称单片机,是指将计算机的CPU、RAM、ROM、定时计数器和多种IO接口集 成在一块芯片上,形成芯片级的计算机。单片机的出现的初衷是面向工业控制,目前它己经广泛应用于各个领域及各个行业。 1976年Intel公司推出低档8位单片机 (MCS-48系列)。在1980年Intel公司推出了 比MCS-48系列性能更为优越的8位单片机8051(MCS-51系列)。1983年Intel公司又推 出了CMOS型80C51、16位

12、单片机5096(MCS-96系列)。众多公司先后推出了32位单片机、 64位单片机。尽管单片机的设计技术在不断的发展,处理能力越来越强,从4位到8位,再到16位、32位,甚至出现了64位,但有一个现象却十分有趣,8位单片机在经历了 三十多年之后,依然显示出强大而旺盛的生命力,其市场占有率一直高居榜首。与从8位机迅速向16位、32位、64位过渡的通用计算机相比,8位微控制器从20 世纪70年代初期诞生至今,虽历经从单片微型计算机到微控制器、单片机和SoC的变迁, 8位机始终是嵌入式低端应用的主要机型,而且在未来相当长的时间里,仍会保持这个势头。这是因为嵌入式系统和通用计算机系统有完全不同的应用特

13、性,从而走向完全不同的技术发展道路。在8位单片机能基本满足其响应速度要求后,数据宽度不是技术发展的主要矛盾。因此8位微控制器会稳定下来,其技术发展方向转为最大限度地满足对象的采集、控制、可靠性和低功耗等品质要求。鉴于嵌入式低端应用对象的有限响应要求,嵌入式系统低端应用的巨大市场及8位机具有的速度潜力,可以预计在未来相当长的时间内,8位机仍然是嵌入式应用中的主流机型。 现今市场上流行的典型的8位微控制器,与传统的8位单片机相比,大多数是由VerilogHDL实现的软处理器IP Core,可以在各种FPGA上实现,设计灵活方便而且易于进行功能扩展。因此,这些单片机将在基于可编程逻辑的应用领域中发挥

14、积极的作用。各大单片机厂家都推出了自己的8位单片机内核,如飞思卡尔的RS08内核、NEC的78K0、Actel的Corc8051、Mkcrochip的PIC内核等。因此研究8位单片机内核具有广泛的现实意义。由于其具有较高的处理性能和较少的资源占用,故具有更加广泛的应用前景。 13课题的工作内容 本次毕业设计主要是对MCS-51单片机 进行研究。用硬件描述语言设计MCS-51 CPU核,对于CPU核的结构进行深入了解和认知,讨论并设计CPU的运算逻辑单元、取址模块、译码执行模块,确定正确的方案。对于硬件描述语言和相关仿真软件进行讨论确定,并调试代码,仿真通过。以MCS-51系列单片机的指令集为蓝

15、本,利用原理框图和硬件描述语言的输入方式完成实现了处理器的各种功能。在 ASIC或者FPGA 上进行测试,完成所需要的逻辑功能。课题工作内容如下,共分为以下几步:(1)确定CPU的总体结构,划分与定义各个层次模块的结构和功能。根据设计的需要设计CPU体系架构形式,并选取与MCS-51兼容的指令集作为设计的指令集。 (2)研究MCS-51CPU的硬件架构及所有指令的工作过程,深入理解工作 原理和设计方法,完成各个层次模块功能的划分与定义。(3)使用硬件描述语言对CPU核进行具体的描述,书写代码。(4) 调试代码,仿真通过。搭建测试平台,对设计完成的CPU进行完备的功能测试。 (5) 对通过功能测

16、试的进行优化、布局布线,进行硬件验证。第2章 CPU的结构及设计2.1 CPU的简介CPU是一个复杂的数字逻辑电路,包含八个基本部件:1)时钟发生器2)指令寄存器3)累加器4)算术逻辑运算单元5)数据控制器6)状态控制器7)程序计数器8)地址多路器各部件的具体结构和逻辑关系在下面的小节里逐一进行介绍。2.2 CPU的结构2.2.1 时钟发生器图2-1 时钟发生器时钟发生器 clkgen (如图2-1所示)利用外来时钟信号clk 来生成一系列时钟信号clk1、fetch、alu_clk 送往CPU的其他部件。其中fetch是外来时钟 clk 的八分频信号。利用fetch的上升沿来触发CPU控制器

17、开始执行一条指令,同时fetch信号还将控制地址多路器输出指令地址和数据地址。clk1信号用作指令寄存器、累加器、状态控制器的时钟信号。alu_clk 则用于触发算术逻辑运算单元。时钟发生器clkgen的波形见下图 2-2所示:其Verilog HDL程序见下面的模块: clkclk1clk2clk4fetchalu_clk图2-2 时钟发生器clkgen的波形 2.2.2 指令寄存器图2-3 指令寄存器指令寄存器如图2-3所示,主要用于寄存指令。指令寄存器的触发时钟是clk1,在clk1的正沿触发下,寄存器将数据总线送来的指令存入高8位或低8位寄存器中。但并不是每个clk1的上升沿都寄存数据

18、总线的数据,因为数据总线上有时传输指令,有时传输数据。什么时候寄存,什么时候不寄存由CPU状态控制器的load_ir信号控制。load_ir信号通过ena 口输入到指令寄存器。复位后,指令寄存器被清为零。每条指令为2个字节,即16位。高3位是操作码,低13位是地址。(CPU的地址总线为13位,寻址空间为8K字节。)本设计的数据总线为8位,所以每条指令需取两次。先取高8位,后取低8位。而当前取的是高8位还是低8位,由变量state记录。state为零表示取的高8位,存入高8位寄存器,同时将变量state置为1。下次再寄存时,由于state为1,可知取的是低8位,存入低8位寄存器中。2.2.3 累

19、加器图2-4 累加器累加器如图2-4所示,用于存放当前的结果,它也是双目运算其中一个数据来源。复位后,累加器的值是零。当累加器通过ena口收到来自CPU状态控制器load_acc信号时,在clk1时钟正跳沿时就收到来自于数据总线的数据。2.2.4 算术运算器图2-5 算术运算器算术逻辑运算单元(如图2-5所示) 根据输入的8种不同操作码分别实现相应的加、与、异或、跳转等8种基本操作运算。利用这几种基本运算可以实现很多种其它运算以及逻辑判断等操作。2.2.5 数据控制器图2-6 数据控制器数据控制器如图2-6,它的作用是控制累加器数据输出,由于数据总线是各种操作时传送数据的公共通道,不同的情况下

20、传送不同的内容。有时要传输指令,有时要传送RAM区或接口的数据。累加器的数据只有在需要往RAM区或端口写时才允许输出,否则应呈现高阻态,以允许其它部件使用数据总线。 所以任何部件往总线上输出数据时,都需要一控制信号。而此控制信号的启、停,则由CPU状态控制器输出的各信号控制决定。数据控制器何时输出累加器的数据则由状态控制器输出的控制信号datactl_ena决定。2.2.6 地址多路器图2-7 地址多路器地址多路器如图2-7,它用于选择输出的地址是PC(程序计数)地址还是数据/端口地址。每个指令周期的前4个时钟周期用于从ROM中读取指令,输出的应是PC地址。后4个时钟周期用于对RAM或端口的读

21、写,该地址由指令中给出。地址的选择输出信号由时钟信号的8分频信号fetch提供。2.2.7 程序计数器图2-8 程序计数器程序计数器如图2-8,它用于提供指令地址。以便读取指令,指令按地址顺序存放在存储器中。有两种途径可形成指令地址:其一是顺序执行的情况,其二是遇到要改变顺序执行程序的情况,例如执行JMP指令后,需要形成新的指令地址。下面就来详细说明PC地址是如何建立的。复位后,指令指针为零,即每次CPU重新启动将从ROM的零地址开始读取指令并执行。每条指令执行完需2个时钟,这时pc_addr已被增2,指向下一条指令。(因为每条指令占两个字节。)如果正执行的指令是跳转语句,这时CPU状态控制器

22、将会输出load_pc信号,通过load口进入程序计数器。程序计数器(pc_addr)将装入目标地址(ir_addr),而不是增2。2.2.8 状态控制器图2-9 状态控制器状态控制器如图2-9,它由两部分组成:1)状态机(上图中的MACHINE部分)2)状态控制器(上图中的MACHINECTL部分)状态机控制器接受复位信号RST,当RST有效时通过信号ena使其为0,输入到状态机中停止状态机的工作。状态控制器的VerilogHDL程序见下面模块:/-/module machinectl( ena, fetch, rst);output ena;input fetch, rst;reg ena

23、;always (posedge fetch or posedge rst)beginif(rst)ena=0;elseena=1;endendmodule/-/状态机是CPU的控制核心,用于产生一系列的控制信号,启动或停止某些部件。CPU何时进行读指令读写I/O端口,RAM区等操作,都是由状态机来控制的。状态机的当前状态,由变量state记录,state的值就是当前这个指令周期中已经过的时钟数(从零计起)。 指令周期是由8个时钟周期组成,每个时钟周期都要完成固定的操作。1)第0个时钟,因为CPU状态控制器的输出:rd和load_ir为高电平,其余均为低电平。指令寄存器寄存由ROM送来的高8位

24、指令代码。2)第1个时钟,与上一时钟相比只是inc_pc从0变为1故PC增1,ROM送来低8位指令代码,指令寄存器寄存该8位代码。3)第2个时钟,空操作。4)第3个时钟,PC增1,指向下一条指令。若操作符为HLT,则输出信号HLT为高。如果操作符不为HLT,除了PC增一外(指向下一条指令),其它各控制线输出为零。5)第4个时钟,若操作符为AND、ADD、XOR或LDA,读相应地址的数据;若为JMP,将目的地址送给程序计数器;若为STO,输出累加器数据。6)第5个时钟,若操作符为ANDD、ADD或XORR,算术运算器就进行相应的运算;若为LDA,就把数据通过算术运算器送给累加器;若为SKZ,先判

25、断累加器的值是否为0,如果为0,PC就增1,否则保持原值;若为JMP,锁存目的地址;若为STO,将数据写入地址处。7)第6个时钟,空操作。8)第7个时钟,若操作符为SKZ且累加器值为0,则PC值再增1,跳过一条指令,否则PC无变化。2.2.9 外围模块为了对CPU进行测试,需要有存储测试程序的ROM和装载数据的RAM、地址译码器。(1).地址译码器module addr_decode( addr, rom_sel, ram_sel);output rom_sel, ram_sel;input 12:0 addr;reg rom_sel, ram_sel;always ( addr )begin

26、casex(addr)13b1_1xxx_xxxx_xxxx:rom_sel,ram_sel=2b01;13b0_xxxx_xxxx_xxxx:rom_sel,ram_sel=2b10;13b1_0xxx_xxxx_xxxx:rom_sel,ram_sel=2b10;default:rom_sel,ram_sel=2b00;endcaseendendmodule地址译码器用于产生选通信号,选通ROM或RAM。FFFFH-1800H RAM1800H-0000H ROM(2).RAM和ROMmodule ram( data, addr, ena, read, write );inout 7:0

27、data;input 9:0 addr;input ena;input read, write;reg 7:0 ram 10h3ff:0;assign data = ( read & ena )? ramaddr : 8hzz;always (posedge write)beginramaddr=data;endendmodulemodule rom( data, addr, read, ena );output 7:0 data;input 12:0 addr;input read, ena;reg 7:0 memory 13h1fff:0;wire 7:0 data;assign data

28、= ( read & ena )? memoryaddr : 8bzzzzzzzz;endmoduleROM用于装载测试程序,可读不可写。RAM用于存放数据,可读可写。第3章 CPU的功能3.1 CPU操作一个微机系统为了完成自身的功能,需要CPU执行许多操作。以下是CPU的主要操作:(1)系统的复位和启动操作;(2)总线读操作;(3)总线写操作。3.1.1 系统的复位和启动操作CPU的复位和启动操作是通过reset引脚的信号触发执行的。当reset信号一进入高电平, CPU就会结束现行操作,并且只要reset停留在高电平状态,CPU就维持在复位状态。在复位状态,CPU各内部寄存器都被设为初值

29、,全部为零。数据总线为高阻态,地址总线为0000H,所有控制信号均为无效状态。reset回到低电平后,接着到来的第一个fetch上升沿将启动RISC_CPU开始工作,从ROM的000处开始读取指令并执行相应操作。3.1.2 总线读操作每个指令周期的前0-3个时钟周期用于读指令,在状态控制器一节中已详细讲述,这里就不再重复。第3.5个周期处,存储器或端口地址就输出到地址总线上,第4-6个时钟周期,读信号rd有效,数据送到数据总线上,以备累加器锁存,或参与算术、逻辑运算。第7个时钟周期,读信号无效,第7.5个周期,地址总线输出PC地址,为下一个指令做好准备。3.1.3总线写操作 每个指令周期的第3

30、.5个时钟周期处,写的地址就建立了,第4个时钟周期输出数据,第5个时钟周期输出写信号。至第6个时钟结束,数据无效,第7.5时钟地址输出为PC地址,为下一个指令周期做好准备。3.2 CPU寻址方式和指令集CPU的指令格式如下图3-1所示:图3-1 CPU的指令格式它的指令系统仅由8条指令组成。1) HLT停机操作。该操作将空一个指令周期,即8个时钟周期。2) SKZ为零跳过下一条语句。该操作先判断当前alu中的结果是否为零,若是零就跳过下一条语句,否则继续执行。3) ADD相加。该操作将累加器中的值与地址所指的存储器或端口的数据相加,结果仍送回累加器中。4) AND相与。该操作将累加器的值与地址

31、所指的存储器或端口的数据相与,结果仍送回累加器中。5) XOR异或。该操作将累加器的值与指令中给出地址的数据异或,结果仍送回累加器中。6) LDA读数据。该操作将指令中给出地址的数据放入累加器。7) STO写数据。该操作将累加器的数据放入指令中给出的地址。8) JMP无条件跳转语句。该操作将跳转至指令给出的目的地址,继续执行。CPU是8位微处理器,一律采用直接寻址方式,即数据总是放在存储器中,寻址单元的地址由指令直接给出。这是最简单的寻址方式。3.3汇 编汇编程序是为了调试软核而开发的,手工编写机器码很容易出错并且工作量很大。在调试过程中修改指令集时,汇编程序也要作相应的修改。所以要求编译器的

32、结构简单性能可靠,在程序中必要的地方可以用堆叠代码方法实现,不必考虑编程技巧和汇编器效率问题。汇编程序用于测试CPU的基本指令集,如果CPU的各条指令执行正确,停止在HLT指令处。如果程序在其它地址暂停运行,则有一个指令出错。程序中,符号后的十六进制表示存储器的地址,每行的/后表示注释。下面是本文设计的一小段程序代码,编译好的汇编机器代码装入虚拟ROM,要参加运算的数据装入虚拟RAM就可以开始进行仿真。 机器码 地址 汇编助记符 注释 00 /地址声明 101_11000 /00 BEGIN: LDA DATA_2 0000_0001 011_11000 /02 AND DATA_3 0000

33、_0010 100_11000 /04 XOR DATA_2 0000_0001 001_00000 /06 SKZ 0000_0000 000_00000 /08 HLT /AND doest work第4章CPU模块的仿真和验证4.1 CPU模块的仿真为了对所设计的CPU模型进行验证,需要把CPU包装在一个模块下,这样其内部连线就隐蔽起来,从系统的角度看就显得简洁,还需要建立一些必要的外围器件模型,例如储存程序用的ROM模型、储存数据用的RAM和地址译码器等。这些模型都可以用VerilogHDL描述,由于不需要综合成具体的电路只要保证功能和接口信号正确就能用于仿真。也就是说,用虚拟器件来代

34、替真实的器件对所设计的CPU模型进行验证,检查各条指令是否执行正确,与外围电路的数据交换是否正常。可在下面的仿真中来代替真实的器件,用于验证CPU模型是否能正确地运行装入ROM和RAM的程序。在CPU的电路图上加上这些外围电路把有关的电路接通,见图4-1。最核心的就是的左边RSC模块,对指令的译码和执行都是在RSC模块内部完成的,而且RSC模块还对其余三个模块进行控制。 图右上角是一块有着256个字节的装载数据的RAM,RSC有四个信号对它实现了读写操作。第一个信号就是写使能write_ram;第二个信号就是读使能read_ram;第三个信号是RAM的地址信号_addr_ram;最后一个就是通

35、用数据总线data_ram。图右下角是一个存储测试程序的ROM存储器,因其容量为4k,有12根地址线,命名为addr_rom;数据输出为data_rom . 另外在左下角有一个Addr_decode模块,命名为addr ,有2个数据线ram_sel和rom_sel分别连接着RAM模块和ROM模块。同时也可以用VerilogHDL模块调用的方法把这些外围电路的模块连接上,这跟用真实的电路器件调试情况很类似。 图4-1 CPU总体模块图按照CPU总体模块图,可实现CPU模块的仿真。步骤如下:首先按照表示各模块之间连线的电路图编制测试文件,即定义Verilog的wire变量作为连线,连接各功能模块之

36、间的引脚,并将输入信号引入,输出信号引出。如若需要,可加入必要的语句显示提示信息。例如, cpu 的测试文件就是cputop.v。其次,使用仿真软件进行仿真,以下介绍Modelsim的使用。在进入Modelsim的环境之后,在file项选择change direction来确定编制的文件所在的目录,然后在design项选择或创建一个library,完成后即可开始编译。在design项选compile项,进入编译环境,选定要编译的文件进行编译。完成编译后,还是在compile项,选择load new design项,选中编译后提示的top module的名字,然后开始仿真。在view项可选波形显

37、示,信号选择,功能和操作简单明了,下图4-2这是ModelSim SE6.0进行波形仿真的结果。在ISE中可以运行Timing Analyzer生成详细的时序报告,本设计中Minimum period: 12.032ns (Maximum Frequency: 83.112MHz),Minimum input arrival time before clock: 6.479ns,Maximum output required time after clock: 9.767ns。图4-2 仿真时序图4.2 CPU模块的综合在对所设计的CPU模型进行验证后,如没有发现问题就可开始做下一步的工作即综

38、合。综合工作往往要分阶段来进行,这样便于发现问题。所谓分阶段就是指:第一阶段:先对构成CPU模型的各个子模块,如状态控制机模块(包括machine模块,machinectl模块)、指令寄存器模块(register模块)、算术逻辑运算单元模块(alu模块)等,分别加以综合以检查其可综合性,综合后及时进行后仿真,这样便于及时发现错误,及时改进。第二阶段:把要综合的模块从仿真测试信号模块和虚拟外围电路模型(如ROM模块、RAM模块、显示部件模块等)中分离出来,组成一个独立的模块,其中包括了所有需要综合的模块。然后给这个大模块起一个名字,如本章中的例子,我们要综合的只是CPU并不包括虚拟外围电路,可以

39、给这一模块起一个名字,例如称它为RSC_CHIP模块。如用电路图描述的话,我们还需给它的引脚加上标准的引脚部件并加标记,见图4-3。图4-3 RSC模块 第三阶段:加载需要综合的模块到综合器,本例所使用的综合器是 Synplify, 选定的 FPGA 是 Altera FLEX10K,针对它的库进行综合。也可以使用QuartusII或其他综合工具进行综合。综合器综合的结果会产生一系列的文件,其中有一个文件报告用了所使用的基本单元,各部件的时间参数以及综合的过程。见下面的报告,它就是这个CPU芯片所用的综合报告,综合所用的库为Altera FLEX10K系列的FPGA库,约定的失踪频率为80MH

40、z。/- CPU芯片综合结果报告开始-/#Program:Synplify Pro 8.1#OS:Windows_NT$ Start of Compile#Fri Jul 01 10:11:03 2009Synplify Verilog Compiler, version 3.1.0, Build 049R,built May 3 2005Copyright (C) 1994-2005, Synplicity Inc. All Rights ReservedI:”C:Program FileSynplicityfpga_81libalteraaltera.v”I:”C:Program File

41、Synplicityfpga_81libalteraaltera_mf.v”I:”C:Program FileSynplicityfpga_81libalteraaltera_lpm.v”I:”C:vlogexeex17_2cpu.v”I:”C: vlogexeex17_2cpu.v”:“C:vlogexeex17_2clk_gen.v”I:”C: vlogexeex17_2cpu.v”:“C:vlogexeex17_2accum.v”Verilog syntax check successful!Compiler output is up to date. No re-compile nec

42、essarySelecting top level module cpuN:”C:vlogexeex17_2clk_gen.v”:2:7:2:13Synthesizing module clk_genN: CL201:“C:vlogexeex17_2clk_gen.v”:18:0:18:5Trying to extract state machine for register stateExtracted state machine for register stateState machine has 9 reachable states with original encodings of:000000000000000100000010N:”C:vlogexeex17_2register.v”:4:7:4:14Synthesizing module registerN: CL201:“C:vlogexeex17_2machine.v”:44:0:44:5Trying to extract state machine for register stateExtracted state machine for register stateState machine has 8 reach

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号