




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 1 26P 1 计算机系统综合课程设计 基于MIPS32的SOC设计实践 下 Verilog Quartus Cyclone版 主讲杨全胜东南大学计算机科学与工程学院 2020 1 26P 2 第3章外围电路及控制系统设计 为MiniSys加I O功能16位定时 计数器16位脉冲宽度调制PWM4 4键盘扫描电路4位7段LED显示控制简单UART控制看门狗控制中断的设计 2020 1 26P 3 为MiniSys加I O功能 1 MiniSys为I O统一编址方式 将DATARAM地址分区 其中高256个字节用来做IO 一共是128个16位端口 0000H 4KBRAM 0FFFH FFFFH FF00H 256BYTE 2020 1 26P 4 为MiniSys加I O功能 2 IO端口地址分配原则 可自行决定 将8根IO端口线 16位地址线的低8位 高8位为全1 的高4位用来译码得到最多16个接口电路的片选信号 低4位组成每个接口电路的16个字节端口地址 由于Minisys只有16位数据处理能力 所以每个接口电路实际上是有8个字端口地址 2020 1 26P 5 为MiniSys加I O功能 3 对MiniSys的修改修改MemWrite和MemRead信号的逻辑 增加IORead和IOWrite信号 改MemtoReg为MemorIOtoReg assignRegWrite R format Lw Jalc I data 读端口 ImmediatHigh 9 0 就是instructions 15 6 2020 1 26P 6 为MiniSys加I O功能 4 增加一个MEMorIO模块 运算单元 存储单元 译码单元 Address wdata rdata 2020 1 26P 7 为MiniSys加I O功能 5 增加一个MEMorIO模块 运算单元 存储单元 译码单元 mAddress MEMorIO Address PortNumber mrdata Irdata rdata wdata iwdata mwdata 片选信号 注意它 2020 1 26P 8 为MiniSys加I O功能 6 具体端口分配 2020 1 26P 9 16位定时 计数器 1 功能两个定时 计数器CNT0和CNT1 具有计数和定时两个功能 计数方式下可以对输入的外部脉冲进行计数 当计数到初值寄存器的值的时候 设置状态寄存器的相应位 定时方式下 在时钟作用下计时器做减1 到1的时候设置状态寄存器的相应位 并在相应的COUT脚输出一个时钟的低电平 平时COUT是高电平 状态寄存器在被读取后被清零 2020 1 26P 10 16位定时 计数器 2 CNT0方式寄存器 FF20H CNT1方式寄存器 FF22H 两个寄存器均为只可写 0 15 0 定时1 计数 0 非循环1 循环 1 2020 1 26P 11 16位定时 计数器 3 CNT0状态寄存器 FF20H CNT1状态寄存器 FF22H 两个寄存器均为只可读 读取后被清0 0 15 1 定时到 1 计数到 1 0 定时 计数未开始1 定时 计数开始 2020 1 26P 12 16位定时 计数器 4 CNT0初值寄存器 O 当前值寄存器 I FF24H CNT1初值寄存器 O 当前值寄存器 I FF26H 0 15 两个寄存器通过读 写线区别 2020 1 26P 13 16位定时 计数器 5 输入输出安排rdata15 rdata0 O 用于CPU读数据wdata15 wdata0 I 用于CPU写数据CS I 片选端CLK I 时钟信号Reset I 复位信号pulse0 pulse1 I 两个CNT的外部脉冲信号address3 address0 I 端口地址IOW I 写信号IOR I 读信号COUT0 COUT1 O 定时 计数器输出 2020 1 26P 14 脉冲宽度调制PWM 1 功能内部一个16位计数器和一个16位对比值 计数器周而复始的加1计数 计数到计数器的最大值 默认为FFFFH 的时候转为0再计数 当计数器的值大于对比值 输出端输出低电平 否则输出高电平 对比值 默认为7FFFH 的不同决定了输出脉冲的占空比 计数器的最大值可以由软件设定 以便确定PWM的输出脉冲的调制频率 2020 1 26P 15 脉冲宽度调制PWM 2 输入输出安排RESET I 初始化address2 address0 I 端口地址D15 D0 I 用于写入对比值和最大值CS I 片选端CLK I 时钟信号IOW I 写信号PWM O 输出端 2020 1 26P 16 脉冲宽度调制PWM 3 内部寄存器最大值寄存器 FF30H 只写 对比值寄存器 FF32H 只写 使能寄存器 FF34H 只写 0 15 默认为0 0 不许输出脉冲1 允许输出脉冲 2020 1 26P 17 4 4键盘扫描电路设计 1 功能自动扫描4 4的键盘 当有键按下的时候扫描键值 将键值记录到键值寄存器 并置位状态寄存器中的 有键 标志 当CPU读出键值后 将 有键 标志清除 2020 1 26P 18 4 4键盘扫描电路设计 2 输入输出安排D15 D0 O 用于读出数据CS I 片选端CLK I 时钟信号line3 line0 I 键盘行输出线col3 col0 O 键盘列输入线address1 address0 I 端口地址IOR I 读信号 2020 1 26P 19 4 4键盘扫描电路设计 3 内部寄存器键值寄存器 FF10H 只读 状态寄存器 FF12H 只读 0 15 0 无键1 有键 2020 1 26P 20 4位7段LED显示控制 1 功能通过向该控制电路写16位数据 经过译码控制共阳极的7段LED显示 16位数每半个字节控制一位7段LED 从高位到地位排列 0 15 LED0 LED1 LED2 LED3 2020 1 26P 21 4位7段LED显示控制 2 7段共阳极LED需要点亮的笔画需要输出0 将a g分别接输出的7位数据的位0 位6 2020 1 26P 22 4位7段LED显示控制 3 输入输出安排Reset I 初始化D15 D0 I 用于写数据CS I 片选端IOW I 写信号led00 led060位led输出线led10 led161位led输出线led20 led262位led输出线led30 led363位led输出线内部寄存器数据锁存器 FF00H 2020 1 26P 23 简单UART控制 1 功能负责控制将CPU来的8位数据并转串 然后按照异步串行通信数据格式输出 将串口来的8位串行数据串转并 并在CPU请求的时候输入给CPU 2020 1 26P 24 简单UART控制 2 设计时注意事项XTAL可以是单独的时钟信号 和系统的CLK不一样 假设外部时钟XTAL的频率是波特率的16倍 本设计采用固定波特率9600b s 接收器接收数据的采样率也是波特率的16倍 既XTAL频率 采用中间值采样的原则 也就是一个数据位占16个接收时钟宽度 在第8个时钟的时候采样 数据格式固定为1位起始位 8位数据位和1位停止位 起始位为0 停止位为1 串行输出线空闲状态为1 2020 1 26P 25 简单UART控制 3 输入输出安排rdata7 rdata0 O 用于CPU读数据wdata7 wdata0 I 用于CPU写数据CS I 片选端XTAL I 外部时钟信号TxD O 串行输出RxD I 外部串行输入address2 address0 I 端口地址IOW I 写信号IOR I 读信号RESET I 复位信号 2020 1 26P 26 简单UART控制 4 内部寄存器输出锁存器 FF40H 只用8位 输入缓冲器 FF40H 只用8位 状态寄存器 FF42H 0 15 1 输出完 1 输入完 状态寄存器在读出输入缓冲器后清D1位 在写入输出锁存器后清D0位 2020 1 26P 27 看门狗电路 1 功能内含一个16位定时器 系统复位后计数值为FFFFH 之后每时钟计数值减1 当减到0的时候 向CPU发4个时钟周期的RESET信号 同时计数值恢复到FFFFH并继续计数 通过软件不断地定期写看门狗端口来复位看门狗 使计数器重新从FFFFH开始计数 注意增加看门狗电路后 CPU的RESET输入脚应该是系统复位信号和看门狗发出的复位信号的组合 2020 1 26P 28 看门狗电路 2 输入输出安排wdata7 wdata0 I 用于CPU写数据CS I 片选端CLK I 外部时钟信号RST O 输出给CPU的复位信号IOW I 写信号RESET I 系统复位信号 2020 1 26P 29 看门狗电路 3 内部逻辑只要CS IOW同时有效 看门狗电路就被复位 看门狗电路访问的端口地址是FF50H 2020 1 26P 30 中断的设计 1 为Minisys增加两个中断功能 中断0和中断1 中断0优先级大于中断1 不支持同级中断嵌套 将 26和 27设计为两个中断返回地址存放寄存器 分别在中断0和中断1到来的时候存放返回地址 它们分别称为 i0和 i1 这两个寄存器也改为系统寄存器 用户不可访问 2020 1 26P 31 中断的设计 2 增加一个中断屏蔽寄存器IMASKR 0 15 0 允许中断01 屏蔽中断0 0 允许中断11 屏蔽中断1 这两位的置和清由硬件自动实现 当中断到来 跳转到服务子程序的时候置位 执行jr i0或jr i1的时候清相应的位 2020 1 26P 32 中断的设计 3 中断处理中断向量的制定将4KB程序ROM的FF8H FFBH作为中断0的向量 FFCH FFFH作为中断1的向量 用户程序应该在这两个地址放上j语句 跳转到真正的中断处理程序入口 如果没有中断处理程序 也要分别放上jr i0和jr i1 2020 1 26P 33 中断的设计 4 中断处理中断响应的过程1 将下一条指令的PC值存放到 i0或 i12 设置IMASKR的相应位 屏蔽有关中断3 跳转到FF8或FFC中断返回过程 对jr i0和jr i1的处理 1 清IMASKR的相应位 打开有关中断2 执行jr i0或jr i1 2020 1 26P 34 中断的设计 5 中断处理中断优先权中断0优先于中断1 当两个中断同时到来 先处理中断0 中断嵌套不允许同级中断嵌套 中断0可以嵌套在中断1中 也就是说中断0能够中断中断1的处理程序 2020 1 26P 35 中断的设计 6 中断请求信号中断请求信号源CTC16 KEY16 UART均可以发中断请求 可自选两个改成中断方式 中断请求信号属性尽量采用电平触发 而且尽量使用多时钟周期的高电平触发 这样可以避免干扰信号的误判 多时钟周期高电平的实现可以考虑使用一个时钟计数器和状态机 2020 1 26P 36 第4章软件设计 伪指令堆栈的实现汇编编译程序测试与应用程序 2020 1 26P 37 伪指令 1 绝对地址定义ORG DATA32位数据区双字地址定义下一语句在数据RAM中的绝对地址 例 ORG DATA0000bufDD0000ffff 55aa1234 ORG CODE32位代码区双字地址定义下一语句在程序ROM中的绝对地址 例 ORG CODEFF8jint0 2020 1 26P 38 伪指令 2 变量定义 仅支持32位变量定义 用十六进制表示值 变量名就是地址 变量名DW值1 值2 值n 值都以16进制表示 例如 bufDW0000ffff 55aa1234 lw V0 buf Zero load0000FFFF注释符 英文的注释文字 2020 1 26P 39 伪指令 3 标号定义与使用 标号名是地址 标号名 语句例如 int0 lw t0 12 t1 jint0 2020 1 26P 40 段定义伪指令 1 数据段定义伪指令DATASEG 数据段开始DATAENDS 数据段结束例 DATASEG 数据段开始bufDD0000ffff 55aa1234DATAENDS 数据段结束 2020 1 26P 41 段定义伪指令 2 代码段定义伪指令CODESEG 代码段开始CODEENDS 代码段结束例 CODESEG 数据段开始lw t0 buff t1 CODEENDS 数据段结束 2020 1 26P 42 程序结束伪指令 格式END标号注意这里的标号一定要在汇编程序中出现过 程序结束伪指令不仅表明程序结束 更重要的是告诉汇编器 程序的第1句是哪一句 因此这里的标号应该是程序第1句的标号 2020 1 26P 43 堆栈的实现 1 使用数据RAM的一部分作为堆栈由于数据是32位的 所以堆栈总共有128个单元 堆栈的操作以及堆栈越界检查全由软件实现 0000H 0FFFH 0E00H 512B堆栈 3584B数据区 2020 1 26P 44 堆栈的实现 2 堆栈操作 初始 SP 0FFFH 压栈操作出栈操作sw t0 0 sp addi sp sp 4addi sp sp 4lw t0 0 sp 2020 1 26P 45 汇编编译程序 1 目标将用MiniSys汇编语言编写的MiniSys程序 含伪指令 编译成 mif文件 其中代码部分编译成prgmip32 mif 数据部分编译成dmem32 mif 注意mif文件中不要出现任何中文 包括注释中也不要用中文 2020 1 26P 46 汇编编译程序 2 要求编译结果正确 格式正确 具有错误报告功能 可定位到错误语句的行 可直接用于QuartusII中进行芯片编译 在prgmip32 mif中 对于每条翻译过的指令码 用注释的方法将源代码及源代码后的注释附在后面以便调试的时候对照 不能用中文 编译程序可以用C C JAVA DELPHI PowerBuilder等任何一种语言来实现 MiniSys汇编指令书写格式参见指令系统的指令举例 汇编程序书写格式见后 2020 1 26P 47 汇编编译程序 3 ORG DATA0000 ThestartaddressofdataBUFDW000000FF 55005500ORG CODE0000 Thestartaddressofcodestart addi t0 Zero 0 Alabelforthefirststatement t0 0lw v0 buf t0 v0 000000FF buf 0 addi t0 t0 4lw v1 buf t0 v1 55005500 buf 4 add v0 v0 v1 v0 v0 v1 550055FFaddi t0 t0 4sw v0 buf t0 buf 8 550055FFjstartendstart Thelabelforendstatementisasthesameastheoneforthefirststatement MiniSys汇编程序书写格式举例 2020 1 26P 48 汇编编译程序 4 prgmip32 mif文件 DEPTH 1024 10bitsofdataline 210 1024WIDTH 32 thewidthofdatais32bitsADDRESS RADIX HEX describeaddressinhexDATA RADIX HEX describedatainhexCONTENTBEGIN0 8c020000 lw 20 0 1 8c030002 lw 32 0 2 3FD 00000000 3FE 01800008 jr i0 jr 26 3FF 01C00008 jr i1 jr 27 END 2020 1 26P 49 汇编编译程序 5 dmem32 mif文件 DEPTH 1024 10bitsofdataline 210 1024WIDTH 32 thewidthofdatais32bitsADDRESS RADIX HEX describeaddressinhexDATA RADIX HEX describedatainhexCONTENTBEGIN0 00000055 1 000000AA 2 3FF 0000 END 2020 1 26P 50 汇编编译程序 6 注意地址对应关系对于代码部分ORG CODE的翻译源程序的代码部分ORG CODE后的地址是实际的32位双字地址 而在prgmip32 mif中的地址是实际双字地址除以4后取低10位的结果 也就是address 11 2 例如 ORG CODE0FF8jr i0应该翻译为3FE 01800008 jr i0 翻译后的地址 翻译后的指令 翻译前的地址 2020 1 26P 51 汇编编译程序 7 注意地址对应关系对于数据部分ORG DATA的翻译源程序的数据部分ORG DATA后的地址是实际的32位双字地址 而在dmem32 mif中的地址是实际双字节地址除以4后取低10位的结果 也就是address 11 2 例如 ORG DATA0004sumDW0000ffff 55aa1234 应该翻译成 1 0000ffff 2 55aa1234 翻译后的地址
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全知识内容培训记录课件
- 吉林省桦甸市七年级生物下册 6.2 神经系统的组成说课稿+学案2(无答案)(新版)新人教版
- 冀教版小学信息技术三年级上册《五 画美丽的早晨》教学设计
- 安全目视化管理培训课件
- 海事处安全培训通知课件
- 2.2.1 用配方法解简单的一元二次方程 说课稿-北师大版九年级数学上册
- 海丽应急安全培训课件
- 律师调档申请书
- 培训机构土地申请书
- 第15课 在线学习说课稿初中信息技术龙教版2018七年级下册-龙教版2018
- 2025年职业病诊断医师考核试题(答案)
- 中学窗帘采购项目方案投标文件(技术文件)
- 渔政执法快艇管理办法
- 2025年中远海运集团招聘笔试备考题库(带答案详解)
- 2025至2030光纤电缆(光缆)行业发展趋势分析与未来投资战略咨询研究报告
- 高桩码头施工培训课件
- 2025年Bio-based+100+生物基材料创新应用案例
- 中通规章管理制度
- 城市地理学第二版第三章城市的产生与发展 第四章城市化原理课件
- 现代文献检索与利用3-文献检索技术
- 2025年(广东省协会 )房屋安全检测鉴定技术培训-机考历年真题考前冲刺题
评论
0/150
提交评论