相连存储器的设计与实现.docx_第1页
相连存储器的设计与实现.docx_第2页
相连存储器的设计与实现.docx_第3页
相连存储器的设计与实现.docx_第4页
相连存储器的设计与实现.docx_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

沈阳航空航天大学课 程 设 计 报 告课程设计名称:计算机组成原理课程设计课程设计题目:相连存储器的设计与实现院(系):计算机学院专 业:计算机科学与技术班 级:学 号:姓 名:指导教师:说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期: 年 月 日沈阳航空航天大学课程设计任务书课程设计名称XXXX课程设计专业学生姓名班级学号题目名称起止日期年月日起至年月日止课设内容和要求:参考资料: 教研室审核意见: 教研室主任签字:指导教师(签名)年月日学 生(签名)年月日课程设计总结:目录第一章 总体设计方案- 1 -1.1 设计原理- 1 -1.2 设计思路- 2 -1.3 设计环境- 3 -第二章 详细设计方案- 4 -2.1 总体模块设计- 4 -2.2 存储器读模块设计- 4 -2.3 存储器写模块设计- 5 -第三章 设计仿真- 6 -3.1 存储器默认存储数据- 6 -3.2 存储器读取默认数据- 6 -3.3存储器读写入新数据- 8 -3.4存储器读取写入后数据- 9 -参考文献- 11 -附录- 12 -程序代码- 12 -Test beach 仿真测试文件- 15 -总体电路图- 18 -计算机组成原理课程设计报告第一章 总体设计方案1 总体设计方案1.1 设计原理相联存储器(Content Addressed Memory),即可按地址寻址,又可按内容(通常是某些字段)寻址,为与传统存储器区别,又称为按内容寻址的的存储器。相联存储器的每个字由若干字段组成,每个字段描述了一个对象的属性,也称为一个内容。写入信息时按顺序写入,不需要地址。读出时,要求中央处理单元给出一个相联关键字,用它和存储器中所有单元中的一部分信息进行比较,若它们相等,则将此单元中余下的信息读出。这是实现存储器并行操作的一种有效途径,特别适合于信息的检索和更新。图1.1 相联存储器原理框图相联存储器的结构框图如图1.1所示。它主要实现将输入寄存器的信息与存储体的信息作比较,相匹配的置为“1”,不匹配的置为“0”,并输出结果。- 27 -1.2 设计思路根据相联存储器的原理特点,即按照内容寻址,因此可以将相联存储器分为以下几个部分:输入寄存器,译码选择电路,存储体,检索寄存器。输入寄存器:用来存放检索字,其位数与相联存储器的字长相等。译码选择电路:用3-8译码器进行译码电路选择,如当置输入端A2A1A0为“000”,译码器,可以向存储体第一个单元地址输入8位二进制的字信息;同时其他的存储单元的信息被屏蔽掉。存储体(AMU):用于存放待检索的数据,由高速半导体存储器构成,以求快速存取。 检索寄存器(CR):把检索项和所有存储单元相应位进行比较,如果比较结果相等,输出高电平1,否则输出低电平0。设存储体由8个字构成,字长为8位的二进制数。CR为检索寄存器,字长也为8位 ,存放要比较的数。首先向输入总线输入一个8位二进制的字,然后通过3-8译码器选择电路依次将8个8位二进制数输入到存储体中。将输入到输入寄存器的字通过检索寄存器分别与存储体里的8个字检索比较,若匹配,则输出信号置1,否则置0,我们就能找到匹配的那个字。 若存储体八个单元存储的数据分别为11111111、11111110、1111101、11111100、11111011、11111010、11111001, 11111000,输入寄存器中的存储数据是11111101,通过检索寄存器器CR进行比较之后,可以知道发现检索数据与存储体中的第3个单元的内容一致,所以结果输出为:00000100。写入数据时,有存储器内置计数器pc指明存储器可写入地址,写入后输出反馈信号,信号与输入信息一致。若当前pc=4,写入00000001,则存储器变为11111111、11111110、1111101、11111100、11111011、00000001、11111001,输出结果为:00000001。1.3 设计环境设计软件:Altera公司的综合性PLD/FPGA开发软件Quartus II。仿真软件:Mentor公司的ModelSim。计算机组成原理课程设计报告第二章 详细设计方案2详细设计方案2.1 总体模块设计依据相连存储器的工作原理,存储器需要两个输入信号,读写控制信号和数据输入信号;以及一个输出信号,结果输出信号。故存储器模块设计为:module ram(in_data,in_r_w,out_state);input7:0 in_data;/输入数据input in_r_w;/读写控制output7:0 out_state;/存储器输出数据Endmodule存储器初始化信息如下。initialbeginmemory0 = 8b11111111;memory1 = 8b11111110;memory2 = 8b11111101;memory3 = 8b11111100;memory4 = 8b11111011;memory5 = 8b11111010;memory6 = 8b11111001;memory7 = 8b11111000;out_state = 8b00000000;pc_2 = 4;end2.2 存储器读模块设计依据相连存储器的工作原理,存储器在读写信号置1是读取数据,并且在输入信号到达时,自动检索匹配输入信号与存储体数据,并根据匹配结果输出信号。if(in_r_w = 1b1)beginout_state = 8b00000000;for(pc=0; pc=7; pc=pc+1)/遍历存储器begincase(pc)3d0: address = 3b000;3d1: address = 3b001;3d2: address = 3b010;3d3: address = 3b011;3d4: address = 3b100;3d5: address = 3b101;3d6: address = 3b110;3d7: address = 3b111;endcasem_data = memoryaddress;/存储器输出数据if(m_data = in_data)/存储器输出数据与输入数据比较out_statepc = 1b1;elseout_statepc = 1b0;endend2.3 存储器写模块设计依据相连存储器的工作原理,存储器在读写信号置0是写入数据,并且在输入信号到达时,将输入信息写入存储器尾部。if(in_r_w = 1b0)beginif(pc_2 7)pc_2 = pc_2 +1;elsepc_2 = 0;/地址译码case(pc_2)3d0: address = 3b000;3d1: address = 3b001;3d2: address = 3b010;3d3: address = 3b011;3d4: address = 3b100;3d5: address = 3b101;3d6: address = 3b110;3d7: address = 3b111;Endcase/写入数据memoryaddress = in_data;/返回数据out_state = memoryaddress;end计算机组成原理课程设计报告第三章 设计仿真3设计仿真3.1 存储器默认存储数据初始时存储器存储数据如表3.1所示。设存储器设存储体由8个字构成,字长为8位的二进制数。默认存储器数据地址(3位二进制)数据(8位二进制) 0001111111100111111110010111111010111111110010011111011101111110101101111100111111111000表3.1 存储器数据3.2 存储器读取默认数据将存储器置为读信号(in_r_w=1),依次按序向输入寄存器输入(in_data信号)11111111、11111110、11111101、11111100(仿真波形图如图3.1所示),11111011、11111010、11111001、11111000(仿真波形图如图3.2所示),11110011、11110010、11110001、11110000(仿真波形图如图3.2所示)。图3.1 仿真波形图1图3.2 仿真波形图2图3.3 仿真波形图3如仿真波形所示,在存储器置为读信号(in_r_w=1)时,在输入11111111、11111110、11111101、11111100,11111011、11111010、11111001、11111000后,结果寄存器依次输出(out_state信号)00000001、00000010、00000100、00001000、0001000、00100000、01000000、10000000。输出显示了这些数据已存储于存储器,相应的,在输入11110011、11110010、11110001、11110000,结果寄存器均输出00000000,表示这些数据不在存储器中。与表3.1中的数据比对,可知此次仿真正确。3.3存储器读写入新数据将存储器置为写信号(in_r_w=0),依次按序向输入寄存器输入(in_data信号)00000001、100000010(仿真波形图如图3.4所示),再此,存储器默认数据追加信号pc=4。图3.4 仿真波形图4若信息写入成功,则此时存储器数据应为表3.2所示。默认存储器数据地址(3位二进制)数据(8位二进制) 0001111111100111111110010111111010111111110010011111011101000000011100000001011111111000表3.2 存储器数据3.4存储器读取写入后数据将存储器置为读信号(in_r_w=1),依次按序向输入寄存器输入(in_data信号)11111111、11111110、11111101、11111100(仿真波形图如图3.5所示),11111011、11111010、11111001、11111000(仿真波形图如图3.6所示),00000001、00000010、11110011、11110010(仿真波形图如图3.7所示)。11110001、11110000(仿真波形图如图3.8所示)。图3.5 仿真波形图5图3.6 仿真波形图6图3.7 仿真波形图7图3.8 仿真波形图8如仿真波形所示,在存储器置为读信号(in_r_w=1)时,在输入11111111、11111110、11111101、11111100,11111011、00000001、00000010、11111000后,结果寄存器依次输出(out_state信号)00000001、00000010、00000100、00001000、0001000、00100000、01000000、10000000。输出显示了这些数据已存储于存储器,相应的,在输入11111010、11111001、11110011、11110010、11110001、11110000,结果寄存器均输出00000000,表示这些数据不在存储器中。与表3.2中的数据比对,可知此次仿真正确。计算机组成原理课程设计参考文献参考文献1 李景华. 可编程程逻辑器件与EDA技术M.北京:东北大学出版社,2001 2 范延滨.微型计算机系统原理、接口与EDA设计技术M.北京:北京邮电大学出版社,20063 王爱英.计算机组成与结构(第4版)M.北京:清华大学出版社,20064 王冠.Verilog HDL与数字电路设计M.北京:机械工业出版社,2005 5 白中英.计算机组成原理M.科学出版社出版社,20086 郑纬民.计算机系统结构M.北京:清华大学出版社,19927 胡越明.计算机组成与设计M.北京:科学出版社,2006计算机组成原理课程设计附录附录程序代码module ram(in_data,in_r_w,out_state);input7:0 in_data;/输入数据input in_r_w;/读写控制output7:0 out_state;/存储器输出数据reg7:0 memory7:0;/模拟存储器reg2:0 address;/存储器地址reg7:0 m_data;/存储器输出数据reg7:0 out_state;integer pc,pc_2;/初始化initialbeginmemory0 = 8b11111111;memory1 = 8b11111110;memory2 = 8b11111101;memory3 = 8b11111100;memory4 = 8b11111011;memory5 = 8b11111010;memory6 = 8b11111001;memory7 = 8b11111000;out_state = 8b00000000;pc_2 = 4;endalways (in_data)begin/存储器读if(in_r_w = 1b1)beginout_state = 8b00000000;/遍历存储器for(pc=0; pc=7; pc=pc+1)begincase(pc)3d0:address = 3b000;3d1:address = 3b001;3d2:address = 3b010;3d3:address = 3b011;3d4:address = 3b100;3d5:address = 3b101;3d6:address = 3b110;3d7:address = 3b111;endcasem_data = memoryaddress;/存储器输出数据/存储器输出数据与输入数据比较if(m_data = in_data)out_statepc = 1b1;elseout_statepc = 1b0;endend/存储器写else if(in_r_w = 1b0)beginif(pc_2 begin in_r_w = 1b1; in_data = 8b11111111; / - end $display(Running testbench); end always / optional sensitivity list / (event1 or event2 or . eventn) begin / code executes for every event on sensitivity list / insert code here - begin #1 in_data = 8b1111

温馨提示

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

评论

0/150

提交评论