计算机综合课程设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2018/12/29
P.18
2009年教育部-英特尔精品课程
4×4键盘扫描电路设计(3)
内部寄存器
键值寄存器(FF10H)(只读) 状态寄存器(FF12H)(只读)
0 15 ×××××××××××××××
将8根IO端口线(16位地址线的低8位,高 8位为全1)的高4位用来译码得到最多16个 接口电路的片选信号。 低4位组成每个接口电路的16个字节端口地 址,由于Minisys只有16位数据处理能力。 所以每个接口电路实际上是有8个字端口地 址。
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2018/12/29
P.15
2009年教育部-英特尔精品课程
脉冲宽度调制PWM(3)
内部寄存器
最大值寄存器(FF30H)(只写) 对比值寄存器(FF32H)(只写) 使能寄存器(FF34H)(只写)
0:无键 1:有键
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2018/12/29 P.19
2009年教育部-英特尔精品课程
4位7段LED显示控制(1)
功能 通过向该控制电路写16位数据,经 过译码控制共阳极的7段LED显示。 16位数每半个字节控制一位7段LED, 从高位到地位排列。
a
f e g d b
c
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2018/12/29
P.21
2009年教育部-英特尔精品课程
4位7段LED显示控制(3)
输入输出安排
Reset (I) 初始化 D15~D0 (I)用于写数据 CS (I) 片选端 IOW(I)写信号 led00~led06 0位led输出线 led10~led16 1位led输出线 led20~led26 2位led输出线 led30~led36 3位led输出线 数据锁存器(FF00H)
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2018/12/29
P.17
2009年教育部-英特尔精品课程
4×4键盘扫描电路设计(2)
输入输出安排
D15~D0(O)用于读出数据 CS(I) 片选端 CLK(I) 时钟信号 line3~line0(I)键盘行输出线 col3~col0(O)键盘列输入线 address1~address0(I)端口地址 IOR(I)读信号
2018/12/29
P.4
2009年教育部-英特尔精品课程
对MiniSys的修改
为MiniSys加I/O功能(3)
修改MemWrite和MemRead信号的逻辑。增加 IORead和IOWrite信号,改MemtoReg为 MemorIOtoReg。
assign RegWrite = (R_format || Lw || Jalc || I_data) && !(Jrn) ; // 需要写寄存器的指令 assign MemWrite =((Sw==1 ) && (ImmediatHigh[9:2] != 8’b11111111)) ? 1:0 ; // 写存储器, ImmediatHigh[9:0] 是新增的输入信号=instructions[15..6] assign MemRead = ((Lw==1) && (ImmediatHigh[9:2] != 8’b11111111)) ? 1:0 ; // 读存储器 assign MemorIOtoReg = IORead || MemRead; // 读操作需要从端口或存储器读数据到寄存器 assign IOWrite = ((Sw==1)&& (ImmediatHigh[9:2] == 8’b11111111)) ? 1:0 ; // 写端口 assign IORead = ((Lw==1) && (ImmediatHigh[9:2] == 8’b11111111)) ? 1:0 ; // 读端口, ImmediatHigh[9:0] 就是instructions[15:6]
2018/12/29
P.6
2009年教育部-英特尔精品课程
为MiniSys加I/O功能(5)
增加一个MEMorIO模块
mwdata mAddress
存储 单元
mrdata
译码 单元
运算 单元
Address PortNumber
MEM orIO
Irdata 片选信号
rdata iwdata
wdata
1 0 15 ×××××××××××××× 1:计数到 1:定时到
0:定时/计数未开始 1:定时/计数开始
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2018/12/29
P.11
2009年教育部-英特尔精品课程
16位定时/计数器(4)
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2018/12/29 P.5
2009年教育部-英特尔精品课程
为MiniSys加I/O功能(4)
增加一个MEMorIO模块
译码 单元
wdata
Address
存储 单元
rdata
运算 单元
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
0000H
4KBRAM
0FFFH
256BYTE
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
FF00H
FFFFHБайду номын сангаас
2018/12/29 P.3
2009年教育部-英特尔精品课程
为MiniSys加I/O功能(2)
IO端口地址分配原则(可自行决定)
2018/12/29 P.1
2009年教育部-英特尔精品课程
第4章 外围电路及控制系统设计
为MiniSys加I/O功能 16位定时/计数器 16位脉冲宽度调制PWM 4×4键盘扫描电路 4位7段LED显示控制 简单UART控制 看门狗控制 中断的设计
2018/12/29 P.2
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2018/12/29 P.10
2009年教育部-英特尔精品课程
16位定时/计数器(3)
CNT0状态寄存器(FF20H) CNT1状态寄存器(FF22H) ;两个寄存器均为只可读,读取后被清0
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2018/12/29 P.9
2009年教育部-英特尔精品课程
16位定时/计数器(2)
CNT0方式寄存器(FF20H) CNT1方式寄存器(FF22H) ;两个寄存器均为只可写
1 0 15 ×××××××××××××× 0:非循环 0:定时 1:循环 1:计数
CNT0初值寄存器(O)/当前值寄存器(I) (FF24H) CNT1初值寄存器(O)/当前值寄存器(I) (FF26H)
15 ×××××××××××××××× 两个寄存器通过读/写线区别 0
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
0 15 ×××××××××××××××× LED3 LED2 LED1 LED0
2018/12/29 P.20
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2009年教育部-英特尔精品课程
4位7段LED显示控制(2)
7段共阳极LED 需要点亮的笔画需 要输出0。 将a~g分别接输出 的7位数据的位0 ~位6
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2009年教育部-英特尔精品课程
为MiniSys加I/O功能(1)
MiniSys为I/O统一编址方式。 将DATA RAM地址分区,其中高256个 字节用来做IO,一共是128个16位端口。
2018/12/29 P.13
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2009年教育部-英特尔精品课程
脉冲宽度调制PWM(1)
功能
内部一个16位计数器和一个16位对比值, 计数器周而复始的加1计数,计数到计数器 的最大值(默认为FFFFH)的时候转为0再 计数。当计数器的值大于对比值,输出端 输出低电平,否则输出高电平。 对比值(默认为7FFFH)的不同决定了输 出脉冲的占空比。 计数器的最大值可以由软件设定,以便确 定PWM的输出脉冲的调制频率。
2018/12/29
P.12
2009年教育部-英特尔精品课程
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)定时/计数器输出
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
首地址 FF00H FF10H FF20H FF30H FF40H FF50H
2018/12/29 P.8
2009年教育部-英特尔精品课程
16位定时/计数器(1)
功能
两个定时/计数器CNT0和CNT1。 具有计数和定时两个功能。 计数方式下可以对输入的外部脉冲进行计数, 当计数到初值寄存器的值的时候,设置状态 寄存器的相应位。 定时方式下,在时钟作用下计时器做减1, 到1的时候设置状态寄存器的相应位,并在 相应的COUT脚输出一个时钟的低电平(平 时COUT是高电平)。 状态寄存器在被读取后被清零。
注意它
2018/12/29 P.7
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2009年教育部-英特尔精品课程
为MiniSys加I/O功能(6)
具体端口分配
片选信号 LEDCtrl KEYCtrl CTCCtrl PWMCtrl UARTCtrl WDTCtrl
0 15 ×××××××××××××××
默认为0
0:不许输出脉冲 1:允许输出脉冲
2018/12/29 P.16
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2009年教育部-英特尔精品课程
4×4键盘扫描电路设计(1)
功能 自动扫描4×4的键盘,当有键按下 的时候扫描键值,将键值记录到键 值寄存器,并置位状态寄存器中的 “有键”标志。当CPU读出键值后, 将“有键”标志清除。
2009年教育部-英特尔精品课程
计算机系统综合课程设计(4)
基于MIPS32的SOC设计实践(下)
(Verilog+Quartus Ⅱ+Cyclone版)
主讲 杨全胜
东南大学计算机科学与工程学院
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
http://cse.seu.edu.cn/people/yangqs/xtzhsj1/Index.aspx
2018/12/29
P.14
2009年教育部-英特尔精品课程
脉冲宽度调制PWM(2)
输入输出安排
RESET(I) 初始化 address2~address0(I)端口地址 D15~D0(I)用于写入对比值和最大值 CS(I) 片选端 CLK(I) 时钟信号 IOW(I)写信号 PWM(O)输出端