计算机组成原理课程设计报告_第1页
计算机组成原理课程设计报告_第2页
计算机组成原理课程设计报告_第3页
计算机组成原理课程设计报告_第4页
计算机组成原理课程设计报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

计算机科学与技术学院课程设计报告课程名称: 计算机组成原理 专 业: 计算机科学与技术 班 级: 计算机1004班 学 号: 1 姓 名: 廖明楷 指导老师: 邵平凡老师 日 期: 2013年3月20日 目录设计题目11.数据格式12.指令系统12.1.算术逻辑运算指令12.2.访内指令及转移指令12.3.输入输出指令22.4.停机指令22.5.具体编码23.数据通路33.1.全局概略图33.2.单片机写控制43.3.微程序显示43.4.指令寄存器53.5.通用寄存器63.6.运算器73.7.内存和程序计数器83.8.地址总线显示93.9.手动输入微程序103.10.单片机写微程序103.11.控制存储器113.12.指令译码123.13.微地址显示133.14.单片机与数据总线输入143.15.设计说明144.时序系统154.1.时序系统与起停控制154.2.时序波形图155.微指令格式166.微程序控制器176.1.原理图176.2.地址转移逻辑187.微程序流程图198.微程序代码表199.设计体会2110.参考文献2111.附录2111.1.单片机写程序2111.1.微程序编码转换程序2931计算机组成原理课程设计报告设计题目一台模型计算机的设计与调试1.数据格式字长:8位格式:定点整数76 0符号尾数其中: 第7位为符号位,数值表示范围是:定点整数:-128 X127。2.指令系统指令的类型设计:算术逻辑运算、数据存取、程序控制、输入输出,按固定操作码4位长度进行设计,设计14条指令。2.1.算术逻辑运算指令 设计7条算术逻辑运算类指令并用单字节表示,寻址方式采用寄存器寻址,指令为RR型,其格式如下:7 43 21 0OP-CODERsRd其中:OP-CODE为操作码,Rs为源寄存器,Rd为目的寄存器2.2.访内指令及转移指令 2条访问指令:存数(STA)、取数(LDA) 2条转移指令:无条件转移(JMP)、结果为零或有进位转移指令(BZC) 指令格式为:7 65 43 21 00 0MOP-CODERd/RsD其中:D为位移量(正负均可),M为寻址方式,其定义如下:寻址方式M有效地址说明00011011E=DE=(D)E=(Ri)+DE=(PC)+D直接寻址间接寻址Ri变址寻址相对寻址本模型机选择变址寄存器Ri为寄存器R2。2.3.输入输出指令格式如下: 7 43 21 0OP-CODEaddr Rd其中,addr=01 时,选中“INPUT DEVICE”中的开关组作为入设备,addr=10时,选中“OUTPUT DEVICE”中的七段LED数码块作为输出设备。2.4.停机指令格式如下: 7 43 21 0OP-CODE0 00 0停机指令HALT,用于实现停机操作。2.5.具体编码序号汇编指令机器代码格式功能说明1CLR Rd0111 00 Rd0Rd2MOV Rs,Rd1000 Rs RdRsRd 3ADC Rs,Rd1001 Rs RdRs+Rd+CyRd4SBC Rs,Rd1010 Rs RdRs-Rd-CyRd 5INC Rd1011 xx RdRd+1Rd6AND Rs,Rd1100 Rs RdRsRdRd 7COM Rd1101 xx Rd8LDA M,D,Rd00 M 00 Rd , DERd 9STA M,D,Rd00 M 01 Rd , DRdE10JMP M,D00 M 10 00 , DEPC11BZC M,D00 M 11 00 , D当Cy=1或Z=1时,EPC12IN Rd0100 10 Rd输入单元Rd13OUT Rd0101 10 RdRd输出单元14HALT0110 00 00停机3.数据通路3.1.全局概略图3.2.单片机写控制3.3.微程序显示3.4.指令寄存器3.5.通用寄存器3.6.运算器3.7.内存和程序计数器3.8.地址总线显示3.9.手动输入微程序3.10.单片机写微程序3.11.控制存储器3.12.指令译码3.13.微地址显示3.14.单片机与数据总线输入3.15.设计说明设计说明数据总线模型计算机的数据总线,用于分时传输各种数据。地址总线模型计算机的地址总线,用于传输地址寄存器的地址。微地址总线微程序控制器的微地址总线,用于分时传输微地址。微程序数据总线微程序控制器的微程序数据总线,用于传输微程序数据。单片机写数据总线单片机写入模型计算机内存和控制存储器的单片机写数据总线。运行步骤1.单片机写内存控制逻辑:把开关SW1,SW2拨动到下面,START=02.启动运行约3秒,等显示数据稳定,表示数据写入完成。3.单击暂停。单片机写内存控制逻辑:把开关SW1,SW2拨动到上面,START=1。缩小设计图,让指令寄存器,微地址寄存器,输出显示器,地址寄存器显示同时显示。单击释放暂停按钮,继续运行。4.观察LED数码管显示器上的数据。4.时序系统4.1.时序系统与起停控制4.2.时序波形图5.微指令格式微程序23222120191817161514131211109876543210控制信号S3S2S1S0MCNWEA9A8A 字段B 字段P 字段uA5Ua4uA3uA2uA1uA1A 字段B 字段P 字段141312控制信号11109控制信号876控制信号000000000001LDRi001RS_B001P1010LDDR1010RD_B010P2011LDDR2011RI_B011P3100LDIR100100P4101LOAD101ALU_B101AR110LDAR110PC_B110LDPC6.微程序控制器6.1.原理图6.2.地址转移逻辑7.微程序流程图8.微程序代码表微地址S3 S2 S1 S0 M CN WE A9 A8ABCUA5UA0000 0 0 0 0 0 0 1 10 0 00 0 01 0 0001 000010 0 0 0 0 0 0 1 11 1 01 1 0110000 010020 0 0 0 0 0 0 0 11 0 00 0 0001010 000030 0 0 0 0 0 0 0 10 1 00 0 00 0 0000 100040 0 0 0 0 0 0 0 11 1 00 0 0010100 000050 0 0 0 0 0 0 0 11 1 00 0 00 0 0000 110060 0 0 0 0 0 0 0 10 1 00 0 00 0 0000 111070 0 0 0 0 0 0 0 11 1 00 0 0010100 000100 0 0 0 0 0 0 1 11 1 01 1 01 1 0001 010110 0 0 0 0 0 0 1 11 1 01 1 01 1 0001 100120 0 0 0 0 0 0 0 10 1 00 0 00 0 0111 011130 0 0 0 0 0 0 1 10 0 00 0 00 0 0000 001140 0 0 0 0 0 0 0 00 1 00 0 00 0 0111 100150 0 0 0 0 0 0 0 10 1 00 0 00 0 0001 110160 0 0 0 0 0 0 1 10 1 10 1 10 0 0001 111171 0 0 1 0 1 0 1 11 1 01 0 10 0 0100 101200 0 0 0 0 0 0 1 11 1 01 1 01 1 0000 011210 0 0 0 0 0 0 1 11 1 01 1 01 1 0000 101220 0 0 0 0 0 0 1 11 1 01 1 01 1 0001 101微地址S3 S2 S1 S0 M CN WE A9 A8ABCUA5UA0230 0 0 0 0 0 0 1 11 1 01 1 01 1 0100 110240 0 0 0 0 0 0 0 00 0 10 0 00 0 0000 001250 0 0 0 0 0 0 1 00000 1 00 0 0000 001260 0 0 0 0 0 0 1 10 0 00 0 00 0 0010 110270 0 1 1 0 0 0 1 10 0 11 0 10 0 0000 001300 0 0 0 0 0 0 1 10 0 10 0 10 0 0000 001310 0 0 0 0 0 0 1 10 1 00010 0 0101 010320 0 0 0 0 0 0 1 10 1 10 0 10 0 0101 100330 0 0 0 0 0 0 1 10 1 00 1 00 0 0110 010340 0 0 0 0 0 0 1 10 1 00 0 10 0 0110 011350 0 0 0 0 0 0 1 10 1 00 1 00 0 0110 110360 0 0 0 0 0 0 1 10 0 00 0 10 0 0001 000370 0 0 0 0 0 0 1 10 0 00 0 10 0 0001 000400 0 0 0 0 0 0 0 10 0 10 0 00 0 0000 001410 0 0 0 0 0 1 0 10 0 00100 0 0000 001420 0 0 0 0 1 0 1 11011010 0 0000 001430 0 0 0 0 0 0 1 10 0 00 0 00 1 1100 100440 0 0 0 0 0 0 1 10 0 00 0 00 0 0000 001微地址S3 S2 S1 S0 M CN WE A9 A8ABCUA5UA0451 0 0 1 0 1 0 1 10 1 01 0 10 1 0010 000460 0 0 0 0 0 0 0 10 1 00 0 00 0 0100 111470 0 0 0 0 0 0 1 10 1 11 1 00 0 0101 000501 0 0 1 0 1 0 1 11 1 01 0 10 0 0101 001511 0 0 1 0 1 0 1 10 1 01 0 10 1 0010 000520 0 0 0 0 0 0 1 10 1 10 1 00 0 0101 011531 0 0 1 0 1 0 1 10011 0 10 0 0000 001540 0 0 0 0 0 0 1 10 1 00 1 00 0 0101 101550 0 0 0 0 1 0 1 10 1 01 0 10 0 0101 110560 0 0 0 1 0 0 1 10 1 01 0 10 0 0101 111570 0 0 0 0 0 0 1 10 1 01 0 10 0 0110 000600 0 0 0 0 1 0 1 10 1 01 0 10 0 0110 001611 0 0 1 0 1 0 1 10011 0 10 0 0000 001620 0 0 0 0 0 0 1 10 011 0 10 0 0000 001630 0 0 0 0 0 0 1 10 1 10 1 00 0 0110 110640 0 0 0 0 1 0 1 11011010 0 0000 001651 0 1 1 1 0 0 1 10011 0 10 0 0000 001660 0 0 0 1 1 0 1 10011 0 10 0 0000 001670 0 0 0 0 0 0 1 10 1 00 0 10 0 0001 000700 0 1 0 1 0 0 1 10 0 11 0 00 0 0001 000710 0 0 0 0 0 0 1 10 1 00 0 10 0 0001 000720 0 0 1 1 0 0 1 10 0 11 0 00 0 0001 000730 0 0 0 0 1 1 1 00 0 01 0 10 0 0001 000740 0 0 0 0 1 1 0 10 0 01 0 10 0 0001 0019.设计体会这次计算机组成原理课程设计不仅是一个综合复习课堂知识的过程,而且是一次非常好的锻炼实践能力的机会。以前在学习计算机科学与技术这个专业时,主要是接触软件,忽略了很多硬件方面的知识。但是,只有综合学习和应用计算机软硬件知识,才能更好和更深层次地理解计算机的工作原理。在课程设计中发现对学过的一些理论知识的理解还不够深刻,尤其是一些细节方面的知识。只是知其然,而不知其所以然,缺乏深入的思考,往往只看到了表面。在课程设计过程中遇到了一些理解不清的知识点。通过看课本,到图书馆借阅相关资料学习,最后加深了对相关知识点的理解,应用到了课程设计中。对一些芯片的具体参数和用法不太熟悉,通过上网搜索,学会了使用这些芯片。通过这次课程设计,我对计算机的组成和工作原理的理解更加深入了。同时,也锻炼了自己实际分析问题和解决问题的能力,为以后的进一步学习打下了基础。10.参考文献计算机组成原理,科学出版社,白中英著。计算机组成原理与系统结构试验教程,西安电子科技大学出版社,杨小龙编著。百度百科中相关芯片资料11.附录 11.1.单片机写程序#include reg51.h#define DELAY_T 4 /延时函数单位时间#define PRO_LONG 16 /程序长度sbit C51_NOT_SW_B=P00;/C51单片机写存储器控制逻辑sbit WUD_CE0=P10;/写微程序数据片选信号sbit WUD_CE1=P11;sbit WUD_CE2=P12;sbit MCS0=P13;/控制存储器片选信号sbit MCS1=P14;sbit MCS2=P15;sbit MOE=P16;/控制存储器读选通信号sbit MWE=P17;/控制存储器写选通信号sbit WRITE_TUA=P20;/写微地址转移逻辑选通信号sbit C51_LDAR=P21;/C51写地址寄存器选通信号sbit WDBUSCE=P22;/写数据总线选通信号sbit C51_CE=P23;/C51访问存储器片选信号sbit C51_OE=P24;/C51读存储器选通信号sbit C51_WE=P25;/C51写存储器选通信号sbit OEUA=P26;/C51写微地址选通信号sbit WEUA=P27;/C51锁存微地址信号/*程序注释输入R1=16输出R1=16内存读取R0=12输出R0=12自增R0输出R0=13R0+R1-R1=29输出R1=29输出R1=29清零R0=0输出R0=0输出R0=0输出R0=0停机*/char ram16= /程序 0x45,/0100 0101 IN R1 /R1=16 0x59,/0101 1001 OUT R1 /R1=16 0x00,/0000 0000 LAD R0 /R0=0x0f=0x12 0x0f,/data_0=0x0f=0x12 0x58,/0101 1000 OUT R0 /R0=0x12 0xb0,/1011 0000 INC R0 /R0=13 0x58,/0101 1000 OUT R0 /R0=13 0x91,/1001 0001 R0+R1-R1 /R1=16+13=29 0x59,/0101 1001 OUT R1 /R1=29 0x59,/0101 1001 OUT R1 0x70,/0111 0000 CLR R0 /R0=00 0x58,/0101 1000 OUT R0 /R0=00 0x58,/0101 1000 OUT R0 /R0=00 0x58,/0101 1000 OUT R0 /R0=00 0x60,/0110 0000 STOP 0x12,/data_0=0x0f=0x12 ;char code c261= /控制存储器高8位0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x01,0x00,0x00,0x01,0x95,0x01,0x01,0x01,0x01,0x00,0x01,0x01,0x31,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x02,0x05,0x01,0x01,0x95,0x00,0x01,0x95,0x95,0x01,0x95,0x01,0x05,0x09,0x01,0x05,0x95,0x01,0x01,0x05,0xb9,0x0d,0x01,0x29,0x01,0x19,0x07,0x06;char code c161= /控制存储器中8位0x81,0xed,0xc0,0xa0,0xe0,0xe0,0xa0,0xe0,0xed,0xed,0xa0,0x80,0x20,0xa0,0xb6,0xea,0xed,0xed,0xed,0xed,0x10,0x04,0x80,0x9a,0x92,0xa2,0xb2,0xa4,0xa2,0xa4,0x82,0x82,0x90,0x84,0xda,0x80,0x80,0xaa,0xa0,0xbc,0xea,0xaa,0xb4,0x9a,0xa4,0xaa,0xaa,0xaa,0xaa,0x9a,0x9a,0xb4,0xda,0x9a,0x9a,0xa2,0x98,0xa2,0x98,0x0a,0x8a;char code c061= /控制存储器低8位0x08,0x82,0x50,0x04,0xa0,0x06,0x07,0xa0,0x8a,0x8c,0x3b,0x01,0x3c,0x0e,0x0f,0x25,0x83,0x85,0x8d,0xa6,0x01,0x01,0x16,0x01,0x01,0x2a,0x2c,0x32,0x33,0x36,0x08,0x08,0x01,0x01,0x01,0xe4,0x01,0x90,0x27,0x28,0x29,0x90,0x2b,0x01,0x2d,0x2e,0x2f,0x30,0x31,0x01,0x01,0x36,0x01,0x01,0x01,0x08,0x08,0x08,0x08,0x08,0x09;char i;void delay(char t) /延时函数,调整延时时间,可看到读写过程char i,j,k;for(i=0;it;i+)for(j=0;jt;j+)for(k=0;kt;k+);void init(void) /初始化数据,准备写入数据C51_NOT_SW_B=1;WUD_CE0=1;WUD_CE1=1;WUD_CE2=1; MCS0=1;MCS1=1;MCS2=1;MOE=1;MWE=1;WRITE_TUA=1;C51_LDAR=0;WDBUSCE=1;C51_CE=1;C51_OE=1;C51_WE=1;OEUA=1;WEUA=0;void pre_run(void) /准备运行模型计算机C51_NOT_SW_B=0;WUD_CE0=1;WUD_CE1=1;WUD_CE2=1;MCS0=0;MCS1=0;MCS2=0; MOE=0;MWE=1;WRITE_TUA=0;C51_LDAR=0;WDBUSCE=1;C51_CE=1;C51_OE=1;C51_WE=1;OEUA=1;WEUA=0;void write_ram(void) /写内存 init();for(i=0;iPRO_LONG;i+) P3=i; WDBUSCE=0;C51_LDAR=0;C51_LDAR=1;delay(DELAY_T);P3=rami;WDBUSCE=0;C51_CE=0; C51_WE=0;delay(DELAY_T);C51_CE=1;C51_WE=1;delay(DELAY_T); WDBUSCE=1;delay(DELAY_T); P3=0; /地址寄存器清零WDBUSCE=0;C51_LDAR=0;C51_LDAR=1; void read_ram(void) /读内存init();for(i=0;iPRO_LONG;i+)P3=i; WDBUSCE=0;C51_LDAR=0;C51_LDAR=1;delay(DELAY_T);WDBUSCE=1;C51_CE=0;C51_OE=0;delay(DELAY_T); C51_CE=1;C51_OE=1;delay(DELAY_T); P3=0; /地址寄存器清零WDBUSCE=0;C51_LDAR=0;C51_LDAR=1; void write_m_ram(void) /写控制存储器 init();MCS0=0;for(i=0;i61;i+) P3=i; OEUA=0;WEUA=0;WEUA=1;P3=c0i;WUD_CE0=0;MOE=1;MWE=0; MWE=1;delay(DELAY_T);WUD_CE0=1;delay(DELAY_T); MCS0=1;MCS1=0;for(i=0;i61;i+) P3=i; OEUA=0;WEUA=0;WEUA=1;P3=c1i;WUD_CE1=0;MOE=1;MWE=0; MWE=1;delay(DELAY_T);WUD_CE1=1;delay(DELAY_T); MCS1=1;MCS2=0;for(i=0;i61;i+) P3=i; OEUA=0;WEUA=0;WEUA=1;P3=c2i;WUD_CE2=0;MOE=1;MWE=0; MWE=1;delay(DELAY_T);WUD_CE2=1;delay(DELAY_T); MCS2=1; void read_m_ram(void) /读控制存储器 init();MWE=1;for(i=0;i61;i+) P3=i; OEUA=0;WEUA=0;WEUA=1;MCS0=0;MCS1=0;MCS2=0;MOE=0;delay(DELAY_T*1);MOE=1;delay(DELAY_T*1); P3=0; OEUA=0;WEUA=0;WEUA=1; void main(void) /主函数write_ram(); /写内存read_ram(); /读内存write_m_ram(); /写控制存储器read_m_ram(); /读控制存储器pre_run(); /准备运行while(1);11.1.微程序编码转换程序因为需要将许多24位2进制的微程序转换为16进制的数据写入控制存储器,所以用PHP语言编写自动转换程序,提高转换

温馨提示

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

评论

0/150

提交评论