(通信与信息系统专业论文)leon2应用于数字机顶盒的fpga仿真.pdf_第1页
(通信与信息系统专业论文)leon2应用于数字机顶盒的fpga仿真.pdf_第2页
(通信与信息系统专业论文)leon2应用于数字机顶盒的fpga仿真.pdf_第3页
(通信与信息系统专业论文)leon2应用于数字机顶盒的fpga仿真.pdf_第4页
(通信与信息系统专业论文)leon2应用于数字机顶盒的fpga仿真.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(通信与信息系统专业论文)leon2应用于数字机顶盒的fpga仿真.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

i 摘 要 摘 要 随着数字多媒体业务和 internet 网络的迅速发展,新型数字机顶盒 (set-top-box, stb)可以有效利用我国巨大的有线电视网络资源,完成视频点播、 数字电视的接收及接入 internet 等综合业务功能。 这种数字机顶盒已由以前单一的 解密收费装置发展成为集解压缩、调制解调、交互控制为一体的数字化传输和终端 设备。 本文首先介绍应用于数字机顶盒中的 leon2 芯片的综合优势。 leon2 是 gaisler research 公司于 2003 年研制完成的一款 32 位、 符合 sparc v8 结构的处理器 ip 核。 它的前身是欧空局研制的 leon 以及 erc32。leon2 的目标主要是权衡性能和价格、 高的可靠性、 可移植性、 可扩展性、 软件兼容性等。 其内部硬件资源可裁剪(可配置)、 主要面向嵌入式系统,可以用 fpgacpld 和 asic 等技术实现。leon2 处理器的片 上资源如下:分离的指令和数据 cache、硬件乘法器和除法器、中断控制器、具有 跟踪缓冲器的调试支持单元(dsu)、2 个 24 位定时器、2 个通用异步串口(uart)、低 功耗模式、看门狗电路、16 位 i0 端口、灵活的存储控制器、以太网 mac 和 pci 接口。 然后详细介绍 leon2 的内部结构,最后介绍如何根据应用需求来配置 leon2 内 部模块,以及在 fpga 板上建立 soc 原型进行软硬件开发。 关键词:关键词:leon2,片上系统,嵌入式系统,知识产权核,现场可编程门阵列 ii abstract abstract with the rapid development of operation of multimedia and internet, the new type stb can fully use the internet resource in our country to complete vod, receipt of digital tv and connection to internet, etc. this type stb have concentrated the compress, moderm, alteration control to a whole without prevenient decode and charge equipment. the text introduce the predominance of leon2 applicating to the new type stb. the leon2 developed by gaisler research company and completed in 2003, implements a 32-bit processor ip core conforming to the sparc v8 architecture. it follow the leon and erc32 of esa .the purpose of leon2 is balancing the capability and price ,good reliability, portability, scalability, software compatibility, etc. its hardware resource is configurable, mainly facing embedded system, and can implement through fpga/cpld and asic technology.leon2 on-chip resource as follows: separate instruction and data caches; hardware multiplier and divider; interrupt controller; debug support unit with trace buffer; two 24-bit timers; two uarts; power-down function;watchdog;16-bit i/o port; flexible memory controller; ethernet mac and pci interface. the text detailedly introduces the structure and working principle of each model on-chip in leon2, and the method of simulating the unix os through cygwin software in windows os to configure the models of leon2. completing the configure and cut down, test the usable periphery device and interface through the testing bench built by the file appertained leon2 resource code. at last, translating and editing leon2 resource code, after analyzing and synthesizing with quartus6.0, get the top-level model plan of leon2, and describe each pin of leon2. then introduce the construction of leon2 detailedly, configure the model of leon2, and build the soc prototype in fpga board to develop the hardware and software. keywords: leon2, soc, embedded system, ip core, fpga 独创性声明 独创性声明 本人声明所呈交的学位论文是我个人在导师的指导下进行的研究工作及 取得的研究成果。尽我所知,除文中已标明引用的内容外,本论文不包含任何 其他人或集体已经发表或撰写过的研究成果。 对本文的研究做出贡献的个人和 集体, 均已在文中以明确方式标明。 本人完全意识到本声明的法律结果由本人 承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校 有权保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查 阅和借阅。 本人授权华中科技大学可以将本学位论文的全部或部分内容编入有 关数据库进行检索, 可以采用影印、 缩印或扫描等复制手段保存和汇编本学位 论文。 保 密 ,在_年解密后适用本授权数。 本论文属于 不保密 。 (请在以上方框内打“”) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 1 1 绪 论 1 绪 论 1.1课题背景 1.1课题背景 有线电视数字机顶盒是用模拟电视机接收数字电视节目、提供广播与交互式多 媒体应用功能的终端设备。 近年来, 随着数字多媒体业务和 internet 网络的迅速发展, 新型数字机顶盒可以有效利用我国巨大的有线电视网络资源,完成视频点播、数字 电视的接收及接入 internet 等综合业务功能。 这种数字机顶盒已由以前单一的解密收 费装置发展成为集解压缩、调制解调、交互控制为一体的数字化传输和终端设备。 1.2课题要求及实现方案 1.2课题要求及实现方案 1.下行通道 如图1-1所示,高频头接收来自有线网的高频信号,通过qam解调器完成信道 解码,从载波中分离出包含音、视频和其它数据信息的传送流(ts)。传送流中一般包 含多个音、视频流及一些数据信息。解复用器则用来区分不同的节目,提取相应的 音、视频流和数据流,送入mpeg2解码器和相应的解析软件,完成数字信息的还 原。对于付费电视,条件接收模块对音、视频流实施解扰,并采用含有识别用户和 进行记账功能的智能卡,保证合法用户正常收看。mpeg2解码器完成音、视频信 号的解压缩,经视频编码器和音频d/a变换,还原出模拟音、视频信号,在常规彩色 电视机上显示高质量图像,并提供多声道立体声节目。 2 调谐器 信道解码 qam解调 mips解复 用控制 mpeg-2 解 压缩 2d 图形处 理 闪存(操 作系统) dram 调制解调 器 条件接受ir接受器 图1-1 下行通道实现方案 2、上行通道 编码 ethernet接口 终端服务器用户指令 物理 信道 上行通道模块 调制 图1-2 上行通道实现方案 1.3 课题中的关键技术 1.3 课题中的关键技术 1.3.1 数字机顶盒主要技术 信道解码、信源解码、上行数据的调制编码、嵌入式 cpu、mpeg2 解压缩是 数字电视机顶盒的主要技术。 (1)信道解码 数字电视机顶盒中的信道解码电路相当于模拟电视机中的高频头和中频放大 器。在数字电视机顶盒中,高频头是必须的,不过调谐范围包含卫星频道、地面电 3 视接收频道、有线电视增补频道。根据 dtv 目前已有的调制方式,信道解码应包括 qpsk、qam、ofdm、vsb 解调功能。 (2)信源解码 模拟信号数字化后,信息量激增,必须采用相应的数据压缩标准。数字电视广 播采用 mpeg2 视频压缩标准,适用多种清晰度图像质量。音频目前则有 ac3 和 mpeg2 两种标准。信源解码器必须适应不同编码策略,正确还原原始音、视频 数据。 (3)上行数据的调制编码 开展交互式应用,需要考虑上行数据的调制编码问题。目前普遍采用的有 3 种 方式,采用电话线传送上行数据,采用以太网卡传送上行数据和通过有线网络传送 上行数据。 (4)嵌入式 cpu 嵌入式 cpu 是数字电视机顶盒的心脏,当数据完成信道解码以后,首先要解复 用,把传输流分成视频、音频,使视频、音频和数据分离开,在数字电视机顶盒专 用的 cpu 中集成了 32 个以上可编程 pid 滤波器,其中两个用于视频和音频滤波, 其余的用于 psi、si 和 private 数据滤波。cpu 是嵌入式操作系统的运行平台,它要 和操作系统一起完成网络管理,显示管理、有条件接收管理(ic 卡和 smart 卡) 、图 文电视解码、数据解码、osd、视频信号的上下变换等功能。为了达到这些功能, 必须在普通 3264 位 cpu 上扩展许多新的功能,并不断提高速度,以适应高速网 络和三维游戏的要求。 (5)mpeg2 解码 mpeg2 是数字电视中的关键技术之一,目前实用的视频数字处理技术基本上 是建立在 mpeg2 技术基础上,mpeg2 是包括从网络传输到高清晰度电视的全 部规范。mpll 用于 vcd,可视电话会议和可视电话用的 h.263 和 h.261 是它的 子集。mpml 用于 dvd、sdtv,mpmh 用于 hdtv。 mpeg2 图像信号处理方法分运动预测、dct、量化、可变长编码 4 步完成, 电路是由 risc 处理器为核心的 asic 电路组成。 mpeg2 解压缩电路包含视频、音频解压缩和其它功能。在视频处理上要完成 主画面、子画面解码,最好具有分层解码功能。图文电视可用 apha 迭显功能选加 在主画面上,这就要求解码器能同时解调主画面图像和图文电视数据,要有很高的 4 速度和处理能力。osd 是一层单色或伪彩色字幕,主要用于用户操作提示。 新型数字机顶盒将家庭的数字业务用一个终端设备进行整合,符合未来家庭用 户的需求。但由于其功能繁杂,存在着许多新的技术难题,比如:如何有效地协调 管理数字电视、internet 连接等综合业务;目前许多机顶盒均是单向的或者利用电话 线回传,如何实现视频点播等新兴的服务业务等。因此,我们有必要选取主频较高、 数据吞吐量大、具有宽带交互功能和高性价比的处理芯片以及优良低廉的软件平台 来完成管理模块的设计。 1.3.2 数字机顶盒嵌入式 cpu 的选择 1概述 随着ic制造工艺水平的快速发展,系统芯片(soc)得到广泛应用。微处理器ip核 是soc的核心,但是多数公司和研究机构不具备开发自己的处理器的力量,比较流行 的做法是购买微处理器ip核,例如arm核或mips核,但需要付出可观的许可证费用。 除了arm核与mips核以外,还有另外一种选择,就是使用开放源代码的微处理器ip核 1。 目前可以实际使用的开放源代码处理器有leon系列与openrisc系列。leon处理 器系列是欧洲航天局所属的研究所开发的32位微处理器,应用在该局的各种asic芯 片内。 目前leon2, leon3的leon系列是一个可配置的微处理器核。 leon2使用sparc v8 指令集的32位的risc处理器,它的源代码由可综合的vhdl代码构成2。 leon2处理器具有以下的特点:内部使用5级流水线,兼容sparc v8指令集;具有 硬件乘法,除法和mac的功能。具有分开的指令和数据高速缓存结构(哈佛结构),可 以根据需求灵活的配置容量,范围是1-64k字节。片上总线规范使用了amba2.0规范, 支持apb和ahb标准。具备一些常用外设,包括uart、中断控制、i/o端口、实时时钟、 看门狗等3。 同时leon2的性能也很不错,使用dhrystone2.1的测试平台,运算速度可以达到 大约0.85mips/mhz.更大的好处是leon2处理器是一个公开源代码,遵循gnu lgpl协 议。任何人都可以从其网站上免费下载其硬件代码和各种开发软件工具与相关文档, 并在自己的asic项目中使用4。 从以上介绍可知,leon2的性能很好,在硬件性能方面能够达到新型数字机顶盒 5 的要求。但是作为一个处理器,除了本身的性能以外,同时还必须要有高效的编译 器软件开发环境,各种应用软件和操作系统的支持。arm和mips在嵌人式系统的广泛 应用,与其背后的高效软件编译开发工具,以及众多支持arm和mips的实时操作系统 软件有很大关系5。 虽然leon系列在这一点上不如商用微处理器, 但是可用性强。 leon 可以下载leccs,一个基于gcc的免费的c/c+的交叉编译系统,同时也可以使用gdb 调试工具做源代码级别的调试。开放源代码社区还提供免费的实时系统rtems, gclinux, ecos等实时操作系统。leon虽然在功耗和性能上同常用的arm,mips等处理 器相比还有些不足,但是完全可以使用6。 2软硬件开发 (1)vhdl leon2除了vhdl源代码外,还提供了顶层makefile文件、modelsim 仿真器支 持文件、bootmonitor文件、vhdl测试文件、综合支持文件、leon2调试用的c语 言源文件等,便于对leon2进行硬件和软件方面的测试7。 leon2的内部结构可以通过模块配置,使处理器具有不同的功能结构。配置的 方式可以采用tkconfig脚本进行图形界面的方式进行,也可以直接对包文件 devicevhd进行手动编辑来完成8。配置主要是通过修改一系列的常数的声明值来 实现的。leon2中许多模块功能是可以进行配置的,这些配置信息是在包文件 targetvhd里进行声明的。 leon2可配置的内容包括: 所采用的综合工具和目标库。综合的技术可以是:synplify、synopsysdc、 synopsysfc2、xst 和leonardo等,目标技术可以是xilinx的virtex和virtex ii(fpga)、atmel的atc35和act25(035025 pm cmos)、tsmc 025 m cmos、 umc 0 250 18 m cmos、 以及actel的proasic(fpga)和axcellerator(反 熔丝fpga)等。 整数单元iu的寄存器窗口、乘法器、除法器、快速跳转和观察点的配置。寄存器 窗口可以设置为232个,但为了同交叉编译器leccs兼容必须配置为8个窗口, 乘法器可以配置成迭交、1616加流水寄存器、1616、328、3216、32 32等形式。 浮点处理单元fpu 的配置,可以配置为使用meiko或是lth两种浮点处理器之一。 cache。cache组的有效大小可以配置为164 kb,但必须是2的次幂,每行可以 6 设置成48个字,组的数量可以是14。替换算法可以是随机、lrr或lru,并 且指令cache和数据cache是独立进行配置的。 存储器控制器。 debug配置。 片上外设的配置,如中断控制器、看门狗等。 引导配置。 amhb总线的相关配置。 pci配置。 leon2有四个可综合的顶层文件: leon.vhd 标准的leon2顶层; leon_ pci.vhd 标准的leon2加上pci接口构成的顶层; leon eth.vhd 标准的leon2加上一个10100 mbps以太网mac构成的顶层; leon_eth pci.vhd 标准的leon2加上一个10100 mbps以太网mac以及pci接 口构成的顶层。 在上述四个顶层的下面,可以很容易地集成用户自己的功能模块。 (2)系统软件开发 同一般的嵌入式系统的软件开发一样,leon2应用系统的软件开发需要采用交叉 编译环境来进行。leon2应用系统软件开发主要采用leccs(leonerc32 gun交叉 编译系统)9。leccs是由cynus、oar和gaisler研究公司开发的多平台开发系统,是 基于gnu 系列的可以自由获取的、 并带有一系列附加 “点” 工具的开发系统。 leccs 可以在linux(一22x或更高)、solaris(一27或更高)和windows (cygwin-117 更高)等多种平台上运行。要在windows平台上运行leccs,必须安装cygwin。它一 个是unix层面模拟器。 leccs包括如下程序包:gcc一323cc+编译器、rtems-460一 cc+实时核、独立c库、gdb一53sparc交叉调试器、远程调试监视器、gdb 的ddd图形前端(仅对unix)、gdb的gdbtk图像前端(仅对windows)、引导pr0m 的builder以及leon调试支持单元监视器等。还包括一些工具,如交叉汇编器、汇编 预处理器、gnu连接器、二进制转换器等等10。 采用leccs进行leon2应用系统软件开发的过程如下: 利用gcc编译和链接程序; 7 利用仿真器tsim调试程序; 在远程目标系统上调试程序; 为独立应用产生引导prom 程序。 leccs支持两种类型的应用:一种是通常的顺序cc+程序,一种是基于 rtems核的多任务实时cc+程序。软件仿真工具可以采用tsim。它是一个通用 的sparc架构仿真器,可以对基于erc一32和leon的计算系统进行仿真。leon2为应 用系统的调试在硬件上作了极大的支持, 那就是它的调试支持单元(dsu)和跟踪缓冲 器11。 1.4 本文主要内容和工作 1.4 本文主要内容和工作 leon2模块包含一个支持sparc v8结构的处理器, 可以被设计为带有如下片上 特性的嵌入式应用系统:独立的指令和数据缓存;硬件乘法器和除法器;中断控制 器;带有追踪缓冲器的调试支持单元;两个24位的定时/计数器;两个uarts;防止 掉电功能;看门狗;16位的i/o接口;灵活的存储器控制器;以太网mac和pci接口。 新的模块可以非常容易的添加到ambh ahb/apb总线上12。 本论文首先按照各个功能模块为基本单元,详细地介绍对它们的内部结构和工 作原理,可以利用的接口。 然后使用cygwin软件在windows环境下模拟unix操作系统,详细介绍如何在 unix操作系统中对各个功能模块进行资源配置,使其满足应用的需求。再在cygwin 中通过leon2源文件中自带的测试文件,对leon2的外围模块和接口进行测试,观 察配置后可以使用的外围模块与接口。 在完成leon2的配置后,使用quartus6.0对leon2的源代码进行编译,分 析与综合,生成leon2芯片的顶层模块,然后对leon2芯片的外部引脚进行详细描 述,最后介绍在fpga板上进行软硬件开发的方法。 8 2 leon2结构及功能模块 2 leon2结构及功能模块 2.1 leon2内部结构 2.1 leon2内部结构 图 2-1 leon2 内部模块图 2.2 leon整数单元 2.2 leon整数单元 2.2.1 概述 leon整数单元有如下特点: 1. 5级流水线指令 2. 独立的指令和数据缓存接口 3. 支持2-32个寄存器窗口 4. 可配置的乘法器(16x16,32x1,32x8,32x16&32x32) 5. 带40累加器可选择的16x16位mac 6. 基数为2的除法器 9 图2-2 leon整数单元结构图 2.2.2 流水线指令 leon整数单元使用单一的五级流水线指令系统。 1.fe(取指令):如果指令缓存被激活,指令就从指令缓存里面被取出来。否 则,取指将转交给存储器控制器。指令在这一级最后有效并锁存在iu中。 2.de(解码):指令被解码,操作数被读入。操作数可能来自寄存器或者是内 部数据旁路。调用和分支目标地址在这一级产生。 3.ex(执行):算数逻辑单元,逻辑和算数操作开始执行。存储器操作(例如 ld)和jmpl/rett指令操作需要的地址被产生。 4.me(存储):访问数据缓存。为了缓存读取数据,数据将在这一级的末尾有 效。将执行阶段读取的数据写到数据缓存中。 5.wr(写数据):将alu,逻辑单元,算数单元或者缓存读取操作的结果写回 到寄存器中。 10 表2-1 各指令执行所需时钟周期 *由乘法器配置决定 2.2.3 乘法指令 leon 处 理 器 支 持 sparc 整 数 乘 法 指 令 umul , smul , umulcc 和 sumulcc。这些指令执行32x32位的整数乘法,产生64位结果。smul和smulcc 执行有符号数的乘法,而umul和umulcc执行的是无符号数的乘法。umulcc和 smulcc也设置状态位影响结果。 2.2.4 乘法和累加指令 为了加速数字信号处理的运算, 两个乘法&累加指令可以实现: umac和smac。 umac执行16位无符号数的乘法,生成32位结果,并且将结果与40位的累加器相加, 40位累加器由y%寄存器的低8位和%asr18寄存器组成。将最低有效的32位结果写入 目标寄存器。smac工作原理类似,只是针对的是有符号数的乘法和累加。mac指 令在一个时钟周期内可以完成,但是有两个时钟周期的反应时间,也就是说如果这 些指令用mac的目的寄存器作为源操作数,就需要插入一个流水线延时周期。 11 2.2.5 除法指令 完全支持sparc v8除法指令(sdiv/udiv/sdivcc/udivcc).除法指令执行64 位除以32位除法, 生成32位结果。 舍入和溢出检测按照sparc v8标准中定义的执行。 2.1.6 处理器重启操作 处理器重启由reset输入引脚持续至少一个时钟周期的信号引起。表2-2显示了 重启之后各寄存器的初始值。所有其他的寄存器维持原来的值(或者未定义)。 表2-2 处理器重启值 从地址0开始执行。 2.3 缓存子系统 2.3 缓存子系统 2.3.1 概述 leon 处理器实行哈佛结构,有独立的指令和数据总线,连接两个独立的缓存 控制器。一个 sparc 标准的处理器也产生一个 8 位地址空间标识符(asi) ,提供多 达 256 个独立的 32 位地址空间。在一般的操作中,leon 处理器访问指令和数据时 用 sparc 标准中定义的 asi 0 x8-0 xb。 当用到 lda/sta 指令时, 交替的地址空间可 以被访问。表 2-3 显示的是 leon 中 asi 的使用情况。仅仅 asi3:0被用作地址映 射,asi7:4不影响任何操作。 12 表 2-3asi 的使用情况表 访问 asi 4-7 将会使一个缓存遗漏,如果数据是先前进入缓存的可以更新缓存中数 据。用 asi 0-3 访问将使一个缓存遗漏,如果数据是先前进入缓存的可以更新缓存中 的数据,或者如果数据不在缓存则分配新的线路,并且地址引用一个缓存单元地址。 缓存区域由默认的 prom 和 ram 区域确定,详见表 2-4。 表 2-4 默认的缓存表 指令和数据缓存控制器可以被独立配置为实行一个直接映射地址的缓存或者一个多 套的缓存。缓存大小可以配置为 1-64k 字节。 2.3.2 指令缓存 指令缓存可以配置为一个直接地址映射的缓存或者一个多套的缓存。缓存的大 小可以配置为 1-64k 字节,并且被分为 16-32 字节的缓存线路。每一条线路有一个 组成标签区域的缓存标签,有效的标签区域每 4 字节的子模块就有一个有效位,可 选的 lrr 和锁存位。一个指令缓存遗漏到一个缓存单元的地址,指令被取出,相应 的标签和数据线路被更新。在多重配置中一条被置换的线路依照替换方针被选中。 如果在缓存控制寄存器取指令脉冲被激活,缓存线路由从遗漏的地址开始的主 13 存储器中的数据来填充,直到线路的末端。同时,指令传送给整数单元。如果整数 单元由于内部的从属部件或多周期指令不能接受指令流,整数单元将会先处理完流 水 线 填 充 。 如 果 整 数 单 元 在 流 水 线 操 作 时 执 行 控 制 转 换 指 令 (branch/call/jmpl/rett/trap) , 在下一个取指令操作时, 流水线填充将被终止。 如果取指令脉冲被激活,在缓存失效时指令数据流也被激活。在这种情况下,取指 令仅仅传送给整数单元,而缓存不更新13。 如果在整数单元停止情况下的缓存填充时发生存储器访问错误,在缓存标签中 相应的有效位将不会被置位。如果整数单元随后从错误的地址取一条指令,缓存遗 漏将会发生。如果错误继续保持,访问错误陷阱(tt=0 x1)指令将被生成。 2.3.3 数据缓存 数据缓存可以被配置为直接地址映射缓存或者多套缓存。缓存大小可以配置为 1-64k 字节,并被分为 16-32 字节的 cache line。每一条有一个缓存标签组成一个标 签区域,有效区域包含每 4 字节的子模块一个有效位,可选的锁定位和 lrr 位。数 据缓存遗失读取数据到缓冲位置时, 4字节的数据从主存储器下载到缓存。 在multi-set 配置中,一条将被取代的 cache line 按照替代法则被选中。如果存储器访问错误发生 在下载数据时,缓冲标签中相应的 valid 位将不被置位。并且一个数据访问错误陷阱 (tt=0 x9)将产生。 2.3.4 缓存刷新 执行 flush 指令后,缓存控制寄存器中的 fi 位被置位,或者用 asi=0 x5 写入 到任何位置, 指令和数据缓存就被刷新。 每个 cache line 的刷新需占用一个时钟周期, 在这期间 iu 将不会暂停,而指令缓存将无效。当刷新操作完成后,缓存将恢复在缓 存控制器中显示的状态(无效,激活或封存) 。 2.3.5 诊断的缓存访问 执行 lda 和 sta 指令后, 通过 asi 的地址空间 0 xc,0 xd,0 xe 和 0 xf, 指令和数 据缓存中的标签和数据都将被访问。缓存偏移地址的地址位用来指出要访问的标签, 14 而地址标签的低有效位用来指出缓存页面。 诊断性的读取标签是可能的,通过执行指令 lda,访问指令缓存标签的 asi=0 xc 和访问数据缓存标签的 asi=0 xe。 一条 cache line 由缓存偏移地址的地址位 和地址标签地址位的最低有效位确定。数据子模块也可以被读取,通过执行指令 lda,访问指令缓存数据的 asi=0 xd 和访问数据缓存数据的 asi=0xf。读取的子模 块在索引的 cache line 中由 a4:2选定。可以直接执行指令 sta,操作数为 asi=0 xc 针对指令缓存标签, 操作数为 asi=0 xe 针对数据缓存标签。 cache line 由缓存偏移地 址和地址标签地址位的低有效位确定。数据子模块可以用 sta 指令和针对指令缓存 数据的 asi=0 xd,针对数据缓存数据的 asi=0 xf 的操作数来直接改写。子模块在索 引 cache line 中的地址由 a4:2确定。 注意诊断访问缓存在执行 flush 操作时是不允许的,否则就会导致数据意外 (trap=0 x09) 。 2.3.6 cache line 锁定 在缓存标签中,指令和数据缓存控制器可以配置为可选择的锁存位。设置锁存 位可以防止 cache line 被替代算法所取代。被锁存的 cache line 将在一个 read-miss 时 被更新并且将保存在缓存中直到这道缓存被解锁。如果有若干条相同偏移量的缓存 被锁存,锁存从 0 页以相同的偏移量向上开始锁存。最后的页面不能被锁存,并且 总是可以替代的。解锁按照递减的顺序。 2.3.7 局部随机存储器 1. 局部指令随机存储器 一个局部指令随机存储器可以选择性的附属于指令缓存控制器。 局部指令 ram 的大小可以配置为 1-64k 字节。局部指令 ram 可以映射为任意的 16m 字节的地址 空间模块。当在局部指令 ram 执行指令时,所有的取指操作都在局部指令 ram 中 实现,并且不会导致整数单元流水线延迟或出现在 ahb 总线上取指的情况。通过下 载/存储整数字指令(ld/st)可以访问局部指令 ram。当写局部 ram 时,只有字 访问被允许。字节,半字或双字都会产生数据意外(trap0 x09) 。读访问可以为任意 15 的数据尺寸。 2. 局部数据随机存储器 局部的数据 ram 可以选择性的附属于数据缓存控制器。执行到局部数据 ram 中的数据访问(下载和存储指令)将不会缓存到普通的数据缓存中,也不会出现在 ahb 总线上。这个 ram 可以在 1-64k 字节,并且可以映射到地址空间中任意 16m 字节模块。注意到 ram 不能用来存储指令,只能为数据。 2.3.8 缓存控制寄存器 指令和数据缓存的操作通过一个通用的缓存控制寄存器(ccr)控制,如图 2-3 所示。 图 2-3 缓存控制寄存器 各区域定义: 1) 31:30:数据缓存替代方法(drepl)-00-无替代方法(直接映射缓存) ,01-随机, 10-lrr,11-lru 2) 29:28:指令缓存替代方法(irepl)-00-无替代方法(直接映射缓存) ,01-随机, 10-lrr,11-lru 3) 27:26:指令缓存结合(isets)-在指令缓存-1 中的页面数:00-直接地址映射; 01-2 路结合;10-3 路结合;11-4 路结合 4) 25:24:数据缓存结合(dsets)-在数据缓存-1 中的页面数:00-直接地址映射; 01-2 路结合;10-3 路结合;11-4 路结合 5) 23:数据缓存探测激活(ds)-置位将激活数据缓存探测。 6) 22:刷新数据缓存(fd)-如果被置位,将刷新数据缓存。总是以 0 读入。 7) 21:刷新指令缓存(fi)-如果被置位,将刷新指令缓存。总是以 0 读入。 8) 20:17:保留 9) 16:指令脉冲(ib)-这一位将在取指令时激活脉冲填充。 16 10) 15:指令缓存刷新标志(ip)-当指令缓存刷新操作进行时该位被置位。 11) 14:数据缓存刷新标志(dp)-当数据缓存刷新操作进行时该位被置位。 12) 13:6:保留 13) 5:数据缓存中断封存(df)-置位后,当任何异步的中断发生时数据缓存将自动 被封存。 14) 4:指令缓存中断封存(df)-置位后,当任何异步的中断发生时指令缓存将自动 被封存。 15) 3:2:数据缓存状态(dcs)-显示当前的数据缓存状态:x0=失效,01=封存,11= 激活。 16) 1:0:指令缓存状态(ics)-显示当前的数据缓存状态:x0=失效,01=封存,11= 激活。 如果 df 或 if 位被置位,当一个异步中断发生时相应的缓存将被封存。在实时 系统中,最坏的执行时间情况下,允许对一段代码进行更精确的计算是有益的。中 断处理的执行将不会收回任何 cache line,并且当控制返回到中断任务时,缓存状态 将会与中断之前区分开。 当一个缓存被中断封存时,它仅仅能在 ccr 中重新被激活。在控制回到中断任 务之前,在中断处理的最后,这一步是特别要完成的。 2.4存储器管理单元 2.4存储器管理单元 一个与 sparc v8 标准兼容的存储器管理单元(mmu)可以选择性的被配置。 2.4.1 asi 地址映射表 当 mmu 被用到时,如表 2-5 的 asi 地址映射表就会生成: 17 表 2-5 mmu asi 的使用 2.4.2 缓存 当 mmu 失效时,缓存联合物理地址映射表进行操作。当 mmu 有效时,缓存 标签存储实地址并且包括一个 8 位的上下文域。当 mmu 有效时,ahb 缓存探测将 不接受探访14。 2.4.3 mmu 寄存器 如表 2-6 中所列举的 mmu 寄存器: 表 2-6mmu 寄存器(asi=0 x19) 2.4.4 旁路转换缓冲(tlb) mmu 可以配置为使用共享的 tlb, 或者将指令 tlb 和数据 tlb 分开。 tlb 条 18 目的数目可以在配置记录里设置为 2-32。tlb 组织和条目数对于软件来说是不可见 的,因此对操作系统不需要作任何的修改15。 2.5 ambh片上总线 2.5 ambh片上总线 2.5.1 概述 包含两条片上总线:ambh ahb 和 apb。apb 总线被用来访问外围功能模块 的片上寄存器,而 ahb 总线用来进行高速数据传输16。完整的 ahb/apb 标准的实 现和 ahb/apb 总线控制器的定制都可以通过 target 包完成。附加的(用户定义 的)ahb/apb 外围设备必须在 macore 模块中添加。 2.5.2 ahb 总线 leon 用 amba-2.0ah 总线连接处理器缓存控制器与存储控制器或者其他(可 选的)高速单元17。在默认配置中,处理器是总线上仅有的控制者,同时还有两个 从属设备:存储控制器和 apb 桥18。表 2-7 显示了默认的地址分配。尝试访问不存 在的设备将造成 ahb 的错误响应。 表 2-7 默认的 ahb 地址分配 2.5.3 apb 总线 apb 桥作为一个从属器件与 ahb 总线连接,并表现为 apb 总线上仅有的控制 19 者。绝大多数外围设备都是通过 apb 总线被访问19。apb 总线的地址映射表见表 2-10 所示。 2.5.4 由处理器产生的 ahb 数据传输 处理器和 ahb 总线之间通过指令和数据缓存控制器连接。两个缓存控制器之间 的冲突可以被局部地解决,并且仅仅只有一个 ahb 控制器接口连接 ahb 总线。处理 器将脉冲传送到指令 cache line 或读/写数据,结果导致双字的下载/存储指令。字 节,半字和字下载/存储指令将实现单个的无序访问20。锁存的传输仅仅有由 ldst 和 swap 指令执行。 2.6 片上外设 2.6 片上外设 2.6.1 片上寄存器 很多系统支持功能模块在片上直接提供。这些功能模块通过映射到 apb 总线上 的寄存器来控制。如表 2-8 所示: 20 表 2-8 片上寄存器(apb 总线) 2.6.2 中断控制器 leon 的中断控制器用来区分来自内部或外部的中断请求的优先级,以及将这 些中断请求传送给整数单元(iu) 。15 种中断类型被分为两个优先级别类。如图 2-4 21 为中断控制器的模块图。 图 2-4 中断控制器模块图 当一个中断产生时,中断未决寄存器中的相应位被置位。这些未决的位与中断 屏蔽寄存器进行与操作,然后再转送给优先级选择器。类别 1 比类别 0 有更高的优 先级。中断与每一个级别比较,中断 15 级有最高级别的优先级,中断 1 有最低级别 优先级。 第一类最高级别的中断被传送给 iu-如果没有未屏蔽未决的中断在第一类中 出现, 则来自类别 0 的最高优先级的未屏蔽中断将被传送给 iu。 当 iu 应答了这个中 断,则相应的未决位被自动清零。 在强制中断寄存器中对某一位置位,中断可以强制产生。在这种情况下,iu 的 应答将清零强制位,而不是未决位。 重启之后,中断屏蔽寄存器所有位都为 0,而其余的控制寄存器未定义。 中断 10-15 没有被 leon 默认配置利用到,可以被加进的 ip 核所利用。注意到 中断 15 没有被整数单元所屏蔽, 应当慎重使用-绝大多数操作系统不能安全的处理这 个中断。 2.6.3 二级中断控制器 可选的二级中断控制器可以用来增加到 32 级中断,也可以被片上单元用来进行 22 片上系统设计。图 2-3 为中断控制器的模块图。 图 2-5 二级中断控制器的模块图 输入中断信号按照配置记录中的设置过滤。过滤的状况可以是如下四种中的一 种:低电平,高电平,下降沿和上升沿。当这个状况被执行,中断未决寄存器相应 位被置位。未决位与中断屏蔽寄存器相与,并传送给优先级选择器。如果至少有一 个未屏蔽未决中断出现,中断输出将被驱动,产生中断 10(默认) 。最高级别的未屏 蔽未决中断可以从中断状态寄存器读取。 已经接受的中断如果没有自动清除-中断处理将对中断清除寄存器中的相应位 写“1”来重新设置未决位。它必须在优先级中断控制器中清除中断 10。中断测试可 以直接对中断未决寄存器进行写操作来完成。写入“1”的位将被置位,而写入“0” 的位保持原先的值。 注意到不是所有的 32 个中断都必须被执行, 按照配置有多少实际被用到。 没有 被用到的中断被忽略,并且相应的寄存器位没有被生成。相对二级中断控制器中断 地址映射由编辑 mcro.vhd 来完成。 在重启之后,中断屏蔽寄存器所有位都为 0,其它控制寄存器未定义。 23 2.6.4 定时器单元 定时/计数器单元有两个 24 位定时/计数器,一个 24 位看门狗和一个 10 位共享 的预分频器(如图 2-6 所示) 。 图 2-6 定时/计数器单元模块图 预分频器时钟频率由系统时钟提供, 每一个时钟周期都减少。 当预分频器下溢, 将会从预分频器重载寄存器中重新载入计数值,并且对两个定时/计数器和看门狗发 出一个计时信号。有效的除法比率等于预分频器重载寄存器的值+1。 定时/计数器的操作通过定时/计数器控制寄存器来控制。一个定时/计数器通过 设置控制寄存器中的使能位来激活。定时/计数器的值在每次预分频器产生一个计数 信号时减少。当一个定时/计数器下溢,它的值将会自动地从定时/计数器重载寄存器 中加载,前提的是重载位置位,否则它将停止(在 0 xffffff)并重置使能位。每一次 下溢将会产生一次中断。 通过将控制寄存器中的加载位写“1” ,任何时候都可以把重载寄存器中的值加 载到定时/计数器。 看门狗的操作与定时/计数器类似, 不同点是它被激活并在下溢时产生外部信号 wdog。这个信号被用来系统重启。 为了将复杂度降到最小,两个定时/计数器共享相同的减法器。这就意味着允许 24 预分频器除法因子最小值位 4(重载寄存器=3) 。 2.6.5 uarts 两个相同的 uart 接口用来串行通信。uart 支持 8 位的数据帧,一个可选的 奇偶校验位和一个停止位21。每一个 uart 都有一个可以编程的时钟驱动器来产生 码率22。通过 rtsn/ctsn 握手信号来支持硬件流控制。图 2-7 为 uart 的模块图。 图 2-7 uart 模块图 1. 发送器操作 传送器通过 uart 控制寄存器中的 te 位激活。当准备发送时,数据从发送器 保持寄存器传输到传送器转换寄存器,并在发送器串口输出引脚(txd)转换为串 行的数据流。它自动地在八个数据位,一个奇偶校验位和一个停止位之后发送一个 起始位(如图 2-8) 。最不具意义的位最先发送。 图 2-8 uart 数据帧 25 停止位被发送之后,如果在发送器保持寄存器中有一个新的字符没利用,发送 器的串行输出将保持高电平,并且 uart 状态寄存器中的发送器转换寄存器空 (tsre)位将被置位23。当新的字符被装载到发送器保持寄存器中,传输的概要和 tsre 位都将被清除。如果发送器失效,它将会继续操作直到当前传输的字符完全被 发送出去。当发送器失效时,发送器保持寄存器将不能载入数据24。 如果流控制失效,ctsn 输入引脚为低电平以便字符能被发送出去。 如果在发送中被取消断言,在转换寄存器中的字符被发送,并且发送器串行输出口 保持停止直到 ctsn 重新被断言。如果 ctsn 与接受器的 rtsn 相连,可以有效阻 止超限。 2. 接收器操作 接收器通过 uart 控制寄存器中的接收使能位激活数据的接收。接收器等待串 口数据输入引脚上的起始

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论