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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

计算机系统综合课程设计东南大学计算机科学与工程学院.docx

1、计算机系统综合课程设计东南大学计算机科学与工程学院计算机系统综合设计设计报告 组长:张冠群(09003105) 成员:杨 俊(09003209)孙啸寅(09003112)万乾坤(09003218)李传佑(09003214)刘 森(09003110)黄 河(09003206)东南大学计算机科学与工程学院二OO六年九月设计名称基于MIPS32的SOC设计完成时间2006.9验收时间本组成员情况姓 名学 号承 担 的 任 务成 绩张冠群09003105mips32CPU、CTC、PWM、WDT、BIOS、实验报告、最终测试刘 森09003110LED、LCD孙啸寅09003112mips32CPU、

2、I/O模块黄 河09003206UART杨 俊09003209mips32CPU、INT32、SOC模块李传佑09003214KEY,部分BIOS万乾坤09003218Mini C Compilers注:本设计报告中各个部分如果页数不够,请大家自行扩页,原则是一定要把报告写详细,能说明本组设计的成果和特色,能够反应小组中每个人的工作。报告中应该叙述设计中的每个模块。设计报告将是评定每个人成绩的一个重要组成部分。本组设计的功能描述(含所有实现的模块的功能)SOC模块串联CPU和外围接口模块,实现片上系统的功能。MEMorIO模块 该模块功能作用是给cpu添加io接口,当读写mem时给RAM输出存

3、储器读写信号,当读写io时给外设输出io读写信号,提供数据线和地址线与外设连接.UART模块简单的串行通信模块。负责控制将CPU来的8位数据并转串,然后按照异步串行通信数据格式输出,将串口来的8位串行数据串转并,并在CPU请求的时候输入给CPU。LED模块 通过向该控制电路写32位数据,经过译码控制共阳极的7段LED显示。32位数每半个字节控制一位7段LED,从高位到地位排列。每个LED灯显示十六进制数,从0到F。LED0模块LED的附属模块,一个LED灯的输出显示。 KEY模块 自动扫描44的键盘,当有键盘按下的时候扫描键值,将键值记录到键值寄存器,然后向CPU发出中断。CPU响应中断,当C

4、PU读出键值后,撤销中断请求。CTC模块定时/计数器模块。两个定时/计数器CNT0和CNT1。具有计数和定时两个功能。计数方式下可以对输入的外部脉冲进行计数,当计数到初值寄存器的值的时候,设置状态寄存器的相应位。定时方式下,在时钟作用下计时器做减1,到0的时候设置状态寄存器的相应位,并在相应的COUT脚输出一个时钟的低电平(平时COUT是高电平)。状态寄存器在被读取后被清零。PWM模块脉冲宽度调制模块。可以调节脉冲的频率和占空比(本模块不支持)。一个12位PWM内部一个计数器和一个对比值,计数器周而复始的加1计数,计数到0FFFH的时候转为0再计数。当计数器的值大于对比值,输出端输出低电平,否

5、则输出高电平。WDT模块看门狗模块。内含一个16位定时器,系统复位后计数值为FFFFH,之后每时钟计数值减1,当减到0的时候,向CPU发4个时钟周期的RESET信号,同时计数值恢复到FFFFH并继续计数。通过软件不断地定期写看门狗端口来复位看门狗,使计数器重新从FFFFH开始计数。增加看门狗电路后,CPU的RESET输入脚是系统复位信号和看门狗发出的复位信号的组合。mips32模块mips32CPU顶层模块。负责串联起CPU内各个控制、取指、执行、中断等模块。完成基于mips指令集的32位CPU功能。具有32位指令,16位地址线和32位数据线。CountClock模块用于串行通信UART的顶层

6、模块。control32模块 控制单元模块。根据指令中的指令码(op)和功能码(funct)的不同组合输出相应的控制信号。dmemory32模块 存储单元模块。实际完成对数据存储器(RAM)的读写操作。executs32模块执行单元模块。完成逻辑运算、算术运算、移位运算、比较转移的PC值计算、比较后赋值。idecode32模块译码单元模块。对寄存器组进行操作。根据指令译码结果,决定向其他部件(如运算器)送1路或两路数据。ifetc32模块取指单元模块。到程序ROM中取指令、对PC值进行4处理、完成各种跳转指令的PC修改功能。int32模块中断模块。具有两个中断功能中断0和中断1,中断0优先级大

7、于中断1,不支持同级中断嵌套。将$12和$14设计为两个中断返回地址存放寄存器,分别在中断0和中断1到来的时候存放返回地址。它们分别称为$i0和$i1。timecount模块时钟脉冲分频模块。共分为四个脉冲,每个脉冲的频率相同,且均为系统时钟频率的4倍。不同的脉冲用以控制不同的CPU内部模块的运行。cs138模块译码模块。用于产生各个接口模块的片选信号。本组设计的主要特色1、可运行指定的31条MIPS指令的RISC型MIPS32微处理器,具有32位指令,16位地址线和32数据线。2、处理器采用哈佛结构,有独立的2KB的指令存储器和4KB的数据存储器具有2个中断源入口,两级中断优先级。3、键盘采

8、用中断方式,而非扫面方式,为中断0级(最高级)。4、2个32位定时/计数器。5、CPU内部采用分频的方法,用不同的时钟对不同的模块进行同步控制,从而提高了主频。6、键盘和LCD的时钟由CTC提供,初始化程序在BIOS中。7、具有看门狗功能,通过指令对WDT进行复位。8、MEM和IO统一编址。IO的高3位产生片选CS信号,故最多支持8个接口,低5位用来选择8个32位的端口。9、附有类C语言编译器,详细见MIPS32编译程序使用手册。10、提供有LCD接口电路。11、CPU与接口之间的数据线有64条,用于CPU输出和读入数据。12、CPU内的ROM和RAM均采用同步控制。13、采用32位的mips

9、汇编BIOS程序。14、编写有RAM和内部寄存器使用规则,避免因用户随意修改RAM和寄存器内存放的值而导致的系统瘫痪。15、规定了用户用mips汇编写代码时可用的寄存器和RAM地址空间。16、按住键盘上的某个键,在屏幕上并不是连续显示键值,两个前后显示的键值之间会有一定的时间间隔。17、当编译用户的C程序时,如果堆栈指针越界,编译程序会提示出错,并在LED上显示三条横线。18、最多支持7个LED的显示。本组设计的体系结构本组设计中各个部件的设计与特色CPU 由六大模块构成,分别是取指模块、控制模块,译码模块,存储模块,执行模块,脉冲分频模块。可运行指定的31条MIPS指令的RISC型MIPS3

10、2微处理器,具有32位指令,16位地址线和32数据线。处理器采用哈佛结构,有独立的2KB的指令存储器和4KB的数据存储器。具有2个中断源入口,两级中断优先级。采用同步的RAM和ROM代替异步。CTC定时/计数器模块。两个定时/计数器CNT0和CNT1。具有计数和定时两个功能。计数方式下可以对输入的外部脉冲进行计数,当计数到初值寄存器的值的时候,设置状态寄存器的相应位。定时方式下,在时钟作用下计时器做减1,到0的时候设置状态寄存器的相应位,并在相应的COUT脚输出一个时钟的低电平(平时COUT是高电平)。状态寄存器在被读取后被清零。PWM脉冲宽度调制模块。可以调节脉冲的频率和占空比(本模块不支持

11、)。一个12位PWM内部一个计数器和一个对比值,计数器周而复始的加1计数,计数到0FFFH的时候转为0再计数。当计数器的值大于对比值,输出端输出低电平,否则输出高电平。WDT看门狗模块。内含一个16位定时器,系统复位后计数值为FFFFH,之后每时钟计数值减1,当减到0的时候,向CPU发4个时钟周期的RESET信号,同时计数值恢复到FFFFH并继续计数。通过软件不断地定期写看门狗端口来复位看门狗,使计数器重新从FFFFH开始计数。增加看门狗电路后,CPU的RESET输入脚是系统复位信号和看门狗发出的复位信号的组合。UART串行通信模块。发送器要对外部时钟XTAL按照波特率要求进行分频,本设计采用

12、固定波特率4800b/s。接收器接收数据的采用率是波特率的16倍(也由XTAL分频得到)。采用中间值采用的原则,也就是一个数据位占16个接收时钟宽度,在第8个时钟的时候采样。数据格式固定为一位起始位0,16位数据位,暂无校验位,1位停止位1,若干空闲位1串行输出线空闲状态为1。端口列表:100:接收移位寄存器101:发送移位寄存器010:写入缓冲寄存器011:内部状态寄存器KEY键盘扫描模块。硬件实现自动扫描44的键盘,当有键盘按下的时候扫描键值,将键值记录到键值寄存器,并置位状态寄存器中的“有键”标志,同时发出中断。当CPU读出键值后,将“有键”标志清除。采用中断的方式而不采用CPU扫描的方

13、式是本设计的特色,如果长时间不按键的话可以节省很多CPU时间,所以这样做提高了CPU的工作效率。LEDLED灯控制模块。设计:32位输入数据,每半个字节控制一位七段LED,由高位到低位排列。由两个模块控制4个LED灯。LCDLCD显示器接口模块。可显示5*7或5*10点字图形20个共2行,因此共可显示40个字图形。内部显示寄存器有20*32bit=20个,每一行10个,可用位移显示法予以显示。本组设计的MIPS32编译程序使用手册编写程序的语言的语法说明:1、允许全局变量和函数局部变量,但一个函数内的变量在同一层次;2、所有标识符只能是以字母打头,数字字母串,不能含有_;3、立即数可以是十进制

14、或是以“0x”打头的十六进制;4、循环语句允许有for、while、do.while,可以用continue、break;5、不支持goto语句;6、条件语句可以用if.else.,不能用switch.case.;7、变量最多允许为一维,类型只能为有符号整型,不支持变量初始化;8、函数可以有申明,返回类型为void或int,可以嵌套、递归调用;9、允许空语句;10、算术操作符有+、-、*、/、%、&(按位与)、|(按位或)、(按位异与)、(右移)、.(取变量的第几位,返回0、1)、-(负号);11、逻辑操作符有&、|、!;12、关系运算符有、=、!=、=;13、支持变量后+,变量后-;14、对

15、端口操作可以用在端口号地址前加$;15、可以没有main()函数,中断处理函数的名称分别为“interuptServer0”和“interuptServer1”;16、不允许用头文件,所有程序只能放在同一个文件中;17、BIOS功能调用的函数名: 该程序生成的中间代码类似于汇编程序,但有所不同:1、每条语句前可以有标号,必须是以L打头,后面跟上十进制数;L0,L1都有特殊含义,L0是中断0跳转地址,L1是中断1跳转地址;2、每条指令都是一个操作码加上三个操作数,中间不需要其他符号,操作数不够的后面补零;3、只有一条伪指令“int”,相当于定义变量,可以在函数结构内定义局部变量,也可在函数外定义

16、全局变量,以;结束。操作数中出现的变量名就等价于立即数,值等于它的偏移量;4、指令“j”“jal”“beq”“bne”后跟的是要跳转的地址处标号的值,而非跳转地址或偏移 ;5、“lw”“sw”的后面的参数顺序与网页上的不同,将立即数放在了最后;6、寄存器可以用$后加数表示,也可以加寄存器名表示,即“$1”和“$at”等价;7、立即数支持正、负,十进制、十六进制(以“0x”打头);对于关键部分的程序可以在中间代码进行人工修改后在汇编翻译。语法和词法:digit : 0-9letter : a-zA-Z ;token : letter token | letter ;decnums : digit

17、 decnums | ;decnum : digit | 1-9 decnums ;hexnums : 0-9a-f hexnums | ;hexnum : 0x hexnums ;number : decnum | hexnum ;var : $ arifif | token | token ariexp ;args : ariexp , args | ariexp | ;funcal : token ( args ) ;arifif : var | funcal | ( ariexp ) | number ;arifor : - arifif |arifif;arithi : arithi

18、 & arifor | arithi | arifor | arithi arifor | arithi . arifor | arithi arifor | arithi arifor | arifor;arisec : arisec * arithi | arisec / arithi | arisec % arithi | arithi;ariexp : ariexp + arisec | ariexp - arisec | arisec;relation : ariexp ariexp | ariexp = ariexp | ariexp = ariexp | ariexp != ar

19、iexp |true ;logthi : ! logthi | ( logexp ) | relation ;logsec : logsec & logthi | logthi ;logexp : logexp | logsec | logsec ;defvar : token | token number ;defvars : defvar , defvariables | defvar ;defsen :int defvars ;empsen : ; ;retsen : return ariexp ;assen : var = ariexp | var + | var - ;forini

20、: asssen | ;forjudge : logexp | ;fordo : asssen | ;forsen : for ( forini ; forjudge ; fordo ) block ;whisen : while ( logexp ) block ;dowsen : do block while ( logexp ) ; ;iffsen : if ( logexp ) block | if ( logexp ) block else block ;sentence : empsen | asssen ; | forsen | whisen | dowsen | iffsen

21、| defsen | funcal ; |break ; |continue ; | retsen ;block : sentence block | sentence ;fundefvars : int token , fundefvars | int token | ;fundec : rettype token ( fundefvars ) ; ;fundef : rettype token ( fundefvars ) block ;function : fundef | fundec ;wsentence : defsen | function ;program : wsentenc

22、e program ;本组设计中的BIOS使用手册BIOS功能调用:1、KEY 入口地址498 23号寄存器存放键值 特权 用户从19号寄存器取数据2、LED 入口地址489 规定将要写的内容放到20号寄存器中3、rUART 入口地址478特权寄存器22用来存放从UART读来的数据,用户从18号寄存器取出数据。UART接收了CPU发出的数据,当接收缓冲寄存器为空时将$24清零4、wUART 入口地址467 用户用21号寄存器来写 21号寄存器的内容赋给24号寄存器 24号寄存器是中断保留使用的5、WRONG(不对用户开放) 入口地址509 使用特权寄存器$25保存是否越界的标志INT中断功能:

23、1、KEY 中断号:0 中断向量表地址:510 中断服务程序首址:362、UART 中断号:1 中断向量表地址:511 中断服务程序首址:46初始化程序:1、初始化LCD2、初始化KEY本组设计中的RAM和寄存器使用手册RAM使用规则: 系统使用的RAM地址范围:03F703FF 用户使用的RAM地址范围:000003F6寄存器使用规则: $0:常量0寄存器 $1:留做汇编使用 $2$3:用于表达式和函数值的存放 $4$7:存放参数13 $8$15:临时变量寄存器,调用时不用保存压栈的$16$21:变量寄存器,需要压栈保存。$18用户从该寄存器里读UART的内容;$19用户从该寄存器里读键盘的

24、键值;$20存放用户将要写到LED内的内容;$21存放用户将要写到UART内的内容$22:特权寄存器,中断程序用它存放从UART读来的数据 $23:特权寄存器,中断程序用它存放寄存器的键值 $24:特权寄存器,UART中断使用 $25:特权寄存器,判断堆栈指针是否越界时使用 $26$27:为操作系统内核保留 $28:指向全局变量的寄存器 $29:存放堆栈指针 $30:存放中断的返回地址 $31:存放函数调用的返回地址本组设计中的Verilog HDL程序清单及VWF图注:这里只列出文件的列表,BIOS程序及.v文件具体代码请参见光盘。CPU的vwf图Cs138的vwf图CTC的vwf图Int3

25、2的vwf图UART的vwf图LCD的vwf图LED的vwf图PWM的vwf图WDT的vwf图(此处为了演示方便,暂时把初值置为8)SOC的vwf图本组光盘粘贴处请将光盘装入纸袋中粘贴于此。本组设计主要测试结果与性能分析(.rpt中的资源使用情况)+-+; Assembler Summary ;+-+-+; Assembler Status ; Successful - Tue Sep 19 21:42:50 2006 ; Revision Name ; SOC ; Top-level Entity Name ; SOC ; Family ; Cyclone ; Device ; EP1C6F

26、256C6 ;+-+-+-+; Fitter Summary ;+-+-+; Fitter Status ; Successful - Tue Sep 19 21:42:44 2006 ; Quartus II Version ; 5.0 Build 148 04/26/2005 SJ Full Version ; Revision Name ; SOC ; Top-level Entity Name ; SOC ; Family ; Cyclone ; Device ; EP1C6F256C6 ; Timing Models ; Final ; Total logic elements ;

27、4,632 / 5,980 ( 77 % ) ; Total pins ; 85 / 185 ( 45 % ) ; Total virtual pins ; 0 ; Total memory bits ; 50,176 / 92,160 ( 54 % ) ; Total PLLs ; 0 / 2 ( 0 % ) ;+-+-+-+; Flow Summary ;+-+-+; Flow Status ; Successful - Tue Sep 19 21:43:35 2006 ; Quartus II Version ; 5.0 Build 148 04/26/2005 SJ Full Version ; Revision Name ; SOC ; Top-level Entity Name ; SOC ; Family ; Cyclone ; Met timing requirements ; No ; Total logic elements ; 4,632 / 5,980 ( 77 % ) ; Total pins ; 85 / 185 ( 45 % ) ; Total virtual pins

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

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