目 录
前 言 .......................................................................................................................................................................... 2 实验一 运算器组成实验......................................................................................................................................... 5
1.算术逻辑运算实验 ........................................................................................................................................ 5 2.带进位算术运算实验 .................................................................................................................................... 8 3. 移位运算器实验 ............................................................................................................................................. 9 实验二 存储器实验 .............................................................................................................................................. 10
1、FPGA中LPM_ROM配置与读出实验............................................................................................. 10
2.LPM_RAM_DP双端口RAM实验 ............................................................................................................. 11 3. FIFO读/写实验 ......................................................................................................................................... 13 4. FPGA与外部RAM接口实验 ................................................................................................................... 14 5.FPGA与外部EEPROM接口实验 ............................................................................................................. 16 实验三 微控制器实验 .......................................................................................................................................... 17 1 时序电路实验 ................................................................................................................................................ 17 2.程序计数器PC与地址寄存器AR实验 ........................................................................................................ 18 3.微控制器组成实验 ......................................................................................................................................... 20 实验四 总线控制实验 .......................................................................................................................................... 22
二.实验原理 ................................................................................................................................................ 22 三.实验内容 ................................................................................................................................................ 22 五.思考题实验题 ........................................................................................................................................ 23 实验五 基本模型机设计与实现 ........................................................................................................................... 24
二.实验原理 ................................................................................................................................................ 24 六.思考题实验题 ........................................................................................................................................ 29 实验六 带移位运算的模型机设计与实现 ........................................................................................................... 31
一.实验目的 ................................................................................................................................................ 31 二.实验原理 ................................................................................................................................................ 31 六.思考题和实验题 .................................................................................................................................... 33 实验七 复杂模型机的设计与实现 ....................................................................................................................... 34
二.实验原理 ................................................................................................................................................ 34 三.实验内容 ................................................................................................................................................ 36 七.设计实验题目 ........................................................................................................................................ 38 实验八.较复杂CPU设计示例 .......................................................................................................................... 38 实验九. 8051/89C51单片机FPGA实现 1. 实验1 2. 实验2
实验十. RSIC CPU设计 。
- 1 -
前 言
随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,现场可编程(FPGA)技术含量正以惊人的速度上升。电子类的新技术项目的开发也更多地依赖于FPGA技术的应用,特别是随着VHDL等硬件描述语言综合工具功能和性能的提高,计算机中许多重要的元件,包括CPU都用硬件描述语言来设计和表达,许多CPU(如8051单片机、8086等),硬核嵌入式系统(如ARM、Excalibue系列FPGA)、软核嵌入式系统(如Nios),微机CPU,乃至整个计算机系统都用FPGA来实现,即所谓的单片系统:SOC和SOPC(System On a Chip、System On a Programmerble Chip )。计算机和CPU的设计技术及其现方法进入了一个全新的时代!不但如此,传统的CPU结构模式,纽曼结构和哈佛结构正在受到巨大的挑战。
例如,美国赢通系统公司(Wincom Systems)推出一款令人惊叹的服务器,其核心部分由FPGA完成的超强功能CPU。该系统工作能力超过50台戴尔或IBM计算机,或Sun Microsytems公司的服务器。该服务器的处理速度要比传统服务器快50到300倍。我们知道,传统的个人电脑及服务器通常采用英特尔的奔腾处理器或SUN公司的SPARC芯片作为中央处理单元,而赢通的这一产品却没有采用微处理器,而是由FPGA芯片驱动。FPGA芯片的运行速度比奔腾处理器慢,但可并行处理多项任务,而微处理器一次仅能处理一项任务。因此,赢通公司的服务器只需配置几个价格仅为2000多美元的FPGA芯片,便可击败SUN公司的服务器或采用英特尔处理器的电脑。
50多年前,匈牙利数学家纽曼(John von Neumann)提出了电脑的设计构想:通过中央处理器从存储器中存取数据,并逐一处理各项任务。现在,通过采用FPGA,SOPC及顺序与并行方式相结合的软核嵌入式系统取代传统微处理器,导致Xlinx的CEO Willem Roelandts所说的“由纽曼提出的电脑架构已经走到尽头”,“可编程芯片将掀起下一轮应用高潮。
FPGA芯片以操作灵活著称,可以重复擦写无限次,而微处理器均采用固定电路,只能进行一次设计。设计人员可通过改变FPGA中晶体管的开关状态对电路进行重写,即重配置。从而,尽管FPGA芯片的时钟频率要低于奔腾处理器,但是由于FPGA芯片可并行处理各种不同的运算,所以可完成许多复杂的任务。例如网页显示,全球天气建模及基因组合核对等,而且处理速度比奔腾处理器或数字信号处理器快得多。
戴尔和SUN公司生产的某些标准服务器也采用了ALTERA公司的FPGA芯片。时代逻辑公司对这些标准服务器加以改进之后,生产了一种用于基因研究的高速处理设备。时代逻辑公司总监Christopher Hoover说该设备比原来的产品至少快1000倍。
美国的Annapolis Micro Systems公司在其电脑芯片电路板中也集成了FPGA芯片,以便提高其产品性能。该公司首席执行官Jane Donaldson指出,相关产品的销售量与前两年相比翻了一番。
IBM和Xilinx公司正在合力开发一种混合芯片,以整合前者的PowerPC微处理器和后者的FPGA芯片。这种芯片的好处是:一台网络服务器的FPGA部分可以根据不同的标准进行订制,而不用为每个国家开发一种新的芯片。
美国Star Bridge Systems公司也声称已在进行一项技术尝试,即采用FPGA芯片和该公司自己的Viva编程语言开发出“超级电脑(hypercomputer)”,对该超级电脑进行测试的美国国家航空航天局(NASA)科学家表示“其运行速度无与伦比,这一产品的性能令人过目难忘”。
超级电脑是科技世界中的极品:售价奇高、速度飞快、集成了数以千计的微处理器。但这种超级电脑也浪费了非常多的芯片资源,每个处理器只能进行单任务操作,大部分功能难以充分发挥。现在有了另一种更为简洁的设计:设计工程师采用FPGA芯片来武装超级电脑,取代了原先大量的英特尔奔腾处理器。经过使用硬件描述语言和相关软件语言的设计,FPGA芯片可并行处理多项任务,从而使所有电路都能随时发挥作用。又由于FPGA芯片可以反复编程培植,而且几乎可瞬时完成。例如可通过利用FPGA的重配置功能,在某一时刻它可以用来预报全球天气状况,而下一时刻又可根据某公司做的主要利率对冲情况来评估债券市场的风险,或是转而去做图象信息处理。
其它公司或机构的研究人员,如美国加州大学伯克利分校(University of California, Berkeley)和杨百翰大学(Brigham Young University)的研究员也正在设计基于FPGA的电脑,这些电脑可在运行中实现动态重配置。这对定位危险目标等军事应用和面容识别一类的计算密集型安全应用十分有用。
- 2 -
不言而喻,全新的计算机设计技术和实现技术向传统的计算机组成原理的教学内容和实验方式提出尖锐的挑战。相形之下,传统的计算机组成原理实验方式已显得十分不合时宜。显然,传统的实验方式,就教学实验内容上看,与现代的计算机组成模式、理念、基本理论和构成形式及方案上都无任何吻合之处;就实验方法上看,完全是一种脱离现代计算机实际组成技术和测试技术(现代测试技术包括JTAG、嵌入式逻辑分析仪等)的,由实验系统设计者一相情愿的构建,难免引出诸多对初学者产生误导的实验方法;就实验模式和模型上看,与真实的现代计算机组成和构建方式相去更远。现代计算机,包括嵌入式系统绝不可能是由一大堆独立的、低速的、传统逻辑器件连接而成,而是由硬件描述语言来表达,由ASIC或FPGA来实现的计算机系统;就教学实验内容上看,传统的计算机组成原理实验只能模拟普通CPU的工作,然而现代计算机应用领域,RSIC精简指令CPU的设计和应用正以前所未有的巨大规模向前发展,当前,无论在开发技术的投入还是应用市场的开拓都远远超过了基于传统构架的CPU(国内绝大多数学校仍然基于此CPU的教学)。
不久前,清华大学对美国一些知名大学计算机实验室(如斯坦富大学)的调研表明,那里计算机方面的硬件实验,包括计算机组成原理实验早已不用那种传统接插式实验,而是全部采用EDA技术进行所有的软硬件实验!!!
显然,使用大规模FPGA、EDA软件工具和IEEE标准硬件描述语言构建的现代计算机组成原理实验系统取代传统的计算机组成原理实验已成为势在必行。
利用FPGA技术,在实验中能方便灵活地设计出简单完整的CPU模型机。基于查找表硬件结构的商用FPGA是当前进行快速系统原型设计最流行的ASIC手段。ALTERA的ACEX系列FPGA产品具有片上EAB,可以构成构成各种类型的存储器结构,利用在其内部的LPM可以实现微程序控制和管理复杂逻辑电路。
现代计算机组成原理实验为实验者提供了全新的学习平台,彻底克服传统组成原理实验项目与实际CPU设计技术完全脱钩,学用脱节,甚至误导的缺陷。让学生有机会接触到最新的计算机组成与设计方面的知识,使学习与工程实际相结合。
传统计算机组成原理实验系统与现代计算机组成实验系统性能特点比较
结构与功能特点 实验特点 结构特点 实验CPU总线控制方式 CPU指令与微指令存储与形成方式 关 传统计算机组成原理实验系统 现代计算机组成原理实验系统 试方法和设计技术 本身只是一验证性模型,与实际的计算机设计模型无真实反映了现代计算机设计工程实现原理、测由规模不等的离散集成电路块和CPLD等器件构成整个CPU,乃至RAM、ROM和通信接口可在CPU模型 构成方式 通过外部ROM或EEPROM构成,指令的数量和微制。 单片FPGA中实现 采用三态门控制,仅适用于74系列小规模集成电路采用总线多路开关,适于VLSI和FPGA等大规模集成电路工程 既可以采用传统的ROM或EEPROM存储,成单片系统,更符合现代CPU设计理念。 利用计算机输入,形成专用文件格式,由ROM中,便捷、高效、实用,规范 指令的宽度受到限制,难以扩展,CPU模型结构被限又可以采用FPGA中的EAB嵌入式方式,构CPU指令和微指令的手工设计、画微指令流程图;手工(烧写或键入)输实现方式 调试困难,耗时费力。 可用硬件资源 入方式实现。设计效率低、可靠性低,查错、排错、EDA工具自动配置进FPGA中设定的RAM、采用中小规模集成电路,硬件资源非常有限,且结构采用FPGA超大规模集成电路,可利用资源丰固定,不便于系统扩展、设计思路受限制,有创意的富,灵活,设计者可根据需要反复调整和改变设想无从得到验证 电路结构,创新设想易得到验证和实现 观察计算机内部指令通过有限的发光二极管和数码管设置观察点,难以观除了能在PC上对整个软硬件系统进行时序仿执行情况,及软硬件察指令执行的细节情况,如竞争、毛刺等。硬件电路真外,还可通过JTAG口使用嵌入式逻辑分析排错 和软件排错都十分困难 仪对CPU内部任意点,跟踪指令与测试。 - 3 -
实验设计、连线方式 元件间通过硬件连线,手工完成,费时费力,效率低、各功能部件间无外部连线,几乎所有接线都在及可靠性 可靠性差。外部连线过多、导线与器件反复插拔,导FPGA片内通过计算机连接实现,并自动检测致导线内部折断损伤。 排错,现场配置,可靠性高,无寿命限制。 设计可移植性和可保由于需当场连线,故功能模型无可移植性和保存性,可保存,可移植,可在自己的PC上设计和软存性 且必须有实验系统才能做实验,所以绝难保证每一同硬件仿真。最后到实验室在实验系统上作硬件学给出自己特色的设计 各功能模块可改进性 基本不能 测试即可,每一同学的设计都有自己特点 各模块功能都可改变,如ALU,移位器,RAM/ROM的容量位宽等 工作速度 由于大多采用74系列、TTL器件,工作速度低 采用高速、低压、低功耗FPGA,速度可达100MHz?真实CPU 嵌入式模块的利用 不能利用 Nios、各种I/O接口模块,如并行接口、串行通信接口,VGA等 可扩展性 多功能性 不能 只能对计算机组成原理作传统方式的验证性实验,可扩展形成计算机构成中不同CPU结构,总线宽,及实用接口等 可实现现代计算机组成原理实验、EDA功能单一、模式陈旧,国外一流大学,如斯坦福大学实验、硬件描述语言VHDL、Verilog教学实验、计算机系完全不用此类实验方式,而用EDA技术完成电子设计竞赛开发、实用CPU或单片机设计相关的实验, 或验证等等 实现容易 利用QuartusII、SOPC Builder和 嵌入式软核Nios可以实现。 RSIC CPU设计实验 完全不能 嵌入式系统硬件实现 完全不能 和软件开发实验 现代计算机组成原理实验系统GW-48 CCP的CPU核心部分由FPGA设计实现,通过FPGA与单
片机的接口,将CPU核心部件中的指令寄存器、程序计数器、地址寄存器、暂存寄存器、运算寄存器、缓冲寄存器、存储器、微地址寄存器、输入缓冲寄存器等大量的数据实时地在数码管和LCD液晶显示屏显示出来。各类操作指示、数据动态流向显示,直观明了,一目了然,摆脱了与电脑联机的麻烦。该实验仪采用FPGA设计CPU内部结构,采用模块化设计,单元电路分开,模块间连接通过内部总线和总线选择多路开关连接相,不必进行硬件连线,从而大大提高了实验的成功率。
传统的计算机组成原理实验台体积庞大,使用的芯片种类繁多,实验中需要花许多时间进行大量的
连线,系统的可靠性低,由于芯片或连线出现的各种故障排查困难。
GW48 CCP计算机组成原理实验台采用模块化的系统结构,学生可通过一系列基本单元实验和模型
计算机综合设计实验,对CPU的运算功能、控制功能、总线结构、指令系统的设计和微指令的实现,以及CPU内部是如何工作的,有直观、深刻的认识。学生在进行各个单元实验和综合实验时,既可以通过系统计算机进行综合设计,系统软件仿真、观察仿真波形,更重要的是可以在GW48 CPP实验平台上,将自己设计的CPU电路下载到FPGA中进行硬件仿真。观察CPU内部的各种信息:包括数据总线、地址寄存器、程序计数器、指令译码器、指令寄存器、控制信号、内部寄存器、数据寄存器、微指令存储器LPM_ROM中的数据等,都实时、直观地显示在LCD屏幕上,使学生实时观察每条指令及微指令的执行情况,从而对计算机的原理、结构,从部件到系统,直到计算机整机有一个形象的、生动的、本质的认识。
通过利用GW48 CCP现代计算机组成原理实验系统的学习,还能使学生在VHDL语言、EDA软件工
具和FPGA的应用方面获得大量实用的技术。
本实验的先期课程为不少于20学时的EDA技术课,包括FPGA应用技术、MaxplusII软件、原理图输入设计方法,以及VHDL基础。推荐选择用科学出版社的《EDA技术实用教程》或清华大学出版社的《EDA技术与VHDL实用教程》一书。
- 4 -
实验一 运算器组成实验
1.算术逻辑运算实验
一.实验目的
1. 了解简单运算器的数据传输通路。 2. 验证运算功能发生器的组合功能。
3. 掌握算术逻辑运算加、减、与的工作原理。 4. 验证实验台运算的8位加、减、与、直通功能。 5. 按给定数据,完成几种指定的算术和逻辑运算。
二.实验内容
1.实验原理
算术逻辑单元ALU的数据通路如图1-1所示。其中运算器ALU181根据74LS181的功能用VHDL硬件描述语言编辑而成,构成8位字长的ALU。参加运算的两个8位数据分别为A[7..0]和B[7..0],运算模式由S[3..0]的16种组合决定,而S[3..0]的值由4位2进制计数器LPM_COUNTER产生,计数时钟是Sclk(图1-1);此外,设M=0,选择算术运算,M=1为逻辑运算,CN为低位的进位位;F[7..0]为输出结果,CO为运算后的输出进位位。两个8位数据由总线IN[7..0]分别通过两个电平锁存器74373锁入,ALU功能如表1-1所示。
表1-1 ALU181的运算功能
选择端 S3 S2 S1 S0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 M=H 逻辑功能 高电平作用数据 M=L 算术操作 Cn=L(无进位) Cn=H(有进位) F?A加1 F?A F?A?B F?A F?A?B F?(A?B)加1 F?AB F?0 F?AB F?A?B F?减1(2的补码) F?A加AB F?A?B+1 F?0 F?A加AB加1 F?B F?A?B F?AB F?A?B F?A?B F?(A?B)加AB F?A减B F?(A?B)加AB+1 F?A减B减1 F?(A?B)减1 F?A?B F?A加AB F?A加B F?(A?B)加AB F?A加AB加1 F?A加B加1 F?(A?B)加AB加1 F?B F?AB F?1 F?AB F?A加A* F?(A?B)加A F?(A?B)加A F?AB减1 F?A加A加1 F?(A?B)加A加1 F?(A?B)加A加1 F?A?B F?A?B F?A F?A F?A减1 注1、* 表示每一位都移至下一更高有效位
注2、在借位减法表达上,表1-1与标准的74181的真值表略有不同。
三.实验步骤
(1)设计ALU元件
在MAX+PLUS II 环境下,用文本输入编辑器Text Editor输入ALU181.VHD算术逻辑单元文件(参考附录文件),编译VHDL文件,并将ALU181.VHD文件制作成一个可调用的原理图元件。
(2)以原理图方式建立顶层文件工程
- 5 -