已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XXXX大学计算机科学学院实验/上机报告课程名称:可编程逻辑系统设计专业:计科06(硬件)成绩:指导教师: 姓名: 日期:2009/6/16项目序号:exp8_0605020234学号:时间:星期五项目名称:简单微处理器设计组号:地点:研505一、实验目的1、通过简单微处理器的设计,理解可编程逻辑系统设计中的自顶向下设计思想;2、进一步巩固利用状态机实现同步时序系统的知识;二、实验环境硬件:PC机、便携式EDA/SOPCDSP实验系统软件:Quartus II 7.0 开发系统三、实验内容完成简单微处理器设计;四、实验过程设计思想:分析CPU工作原理,可得如下运行流程:程序计数器PC到数据总线,通过总线到地址寄存器MAR MAR将PC传过来的数据信息送到只读内存ROM(在具体实验中用RAM、MDR表示) ROM通过总线将地址送入指令寄存器IR IR将操作码送入控制器,同时再将指令地址信息送入总线,通过数据总线将指令地址信息再次送入MAR MAR再将信息送入ROM,ROM通过总线将地址信息送入寄存器A和B A、B再送入逻辑运算元件,通过ALU运算后将结果通过总线送入寄存器A A再将结果通过总线送入输出接口 因此,可将CPU模型分为ALU、CONC、MAR、RAM、MDR、IR、PC、ACC等八个模块,其中CONC为CPU模块核心,通过ASM图对CONC进行状态确定,如下所示:根据ASM状态转换图,可确定状态S0、S1、S2、S3、S4、S5、S6、S7、S8等九个状态,对各部分模块进行具体设计。实验步骤:1、 ALU设计:LIBRARY ieee;USE ieee.std_logic_1164.ALL;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;ENTITY alu ISPORT ( clk,add,sub:in std_logic; a:in std_logic_vector(7 downto 0); b:in std_logic_vector(7 downto 0); c:out std_logic_vector(7 downto 0) );END alu;ARCHITECTURE behave OF alu IS beginprocess(clk)begin if rising_edge(clk) then if(add=1)then c=a+b; elsif(sub=1)then c=a-b; end if; end if;end process;end behave;2、 CONC设计:LIBRARY ieee;USE ieee.std_logic_1164.ALL;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;ENTITY conc ISPORT ( clk,rst: IN std_logic; op: IN std_logic_vector(1 downto 0); pc_bus,load_pc,inc_pc,addr_bus:out std_logic;load_ir,mdr_bus,load_mdr: out std_logic;load_mar,cs,r_nw,alu_add,alu_sub,alu_acc,acc_bus,load_acc:out std_logic );END conc;ARCHITECTURE behave OF conc IS type states is (st0, st1, st2, st3, st4,st5,st6,st7,st8); signal c_state, n_state: states;begin REG: process (clk) begin if rising_edge(clk) then c_state=n_state; end if; end process REG;COM: process(c_state,clk) begin if (rst=1)then pc_bus=0;load_pc=0;inc_pc=0;addr_bus=0;load_ir=0;mdr_bus=0;load_mdr=0;load_mar=0;cs=0;r_nw=0;alu_add=0;alu_sub=0;alu_acc=0;acc_bus=0;load_accpc_bus=1;load_pc=0;inc_pc=1;addr_bus=0;load_ir=0;mdr_bus=0;load_mdr=0;load_mar=1;cs=0;r_nw=0;alu_add=0;alu_sub=0;alu_acc=0;acc_bus=0;load_acc=0;n_statepc_bus=0;load_pc=0;inc_pc=0;addr_bus=0;load_ir=0;mdr_bus=0;load_mdr=0;load_mar=0;cs=1;r_nw=1;alu_add=0;alu_sub=0;alu_acc=0;acc_bus=0;load_acc=0;n_statepc_bus=0;load_pc=0;inc_pc=0;addr_bus=0;load_ir=1;mdr_bus=1;load_mdr=0;load_mar=0;cs=0;r_nw=0;alu_add=0;alu_sub=0;alu_acc=0;acc_bus=0;load_acc=0;n_statepc_bus=0;load_pc=0;inc_pc=0;addr_bus=1;load_ir=0;mdr_bus=0;load_mdr=0;load_mar=1;cs=0;r_nw=0;alu_add=0;alu_sub=0;alu_acc=0;acc_bus=0;load_acc=0;if(op=00)then n_state=st4;else n_statepc_bus=0;load_pc=0;inc_pc=0;addr_bus=0;load_ir=0;mdr_bus=0;load_mdr=1;load_mar=0;cs=0;r_nw=0;alu_add=0;alu_sub=0;alu_acc=0;acc_bus=1;load_acc=0;n_statepc_bus=0;load_pc=0;inc_pc=0;addr_bus=0;load_ir=0;mdr_bus=0;load_mdr=0;load_mar=0;cs=1;r_nw=0;alu_add=0;alu_sub=0;alu_acc=0;acc_bus=0;load_acc=0;n_statepc_bus=0;load_pc=0;inc_pc=0;addr_bus=0;load_ir=0;mdr_bus=0;load_mdr=0;load_mar=0;cs=1;r_nw=1;alu_add=0;alu_sub=0;alu_acc=0;acc_bus=0;load_acc=0;if(op=01)then n_state=st7;else n_statepc_bus=0;load_pc=0;inc_pc=0;addr_bus=0;load_ir=0;mdr_bus=1;load_mdr=0;load_mar=0;cs=0;r_nw=0;alu_add=0;alu_sub=0;alu_acc=0;acc_bus=0;load_acc=1;n_stateif(op=10)thenpc_bus=0;load_pc=0;inc_pc=0;addr_bus=0;load_ir=0;mdr_bus=1;load_mdr=0;load_mar=0;cs=0;r_nw=0;alu_add=1;alu_sub=0;alu_acc=1;acc_bus=0;load_acc=0;else pc_bus=0;load_pc=0;inc_pc=0;addr_bus=0;load_ir=0;mdr_bus=1;load_mdr=0;load_mar=0;cs=0;r_nw=0;alu_add=0;alu_sub=1;alu_acc=1;acc_bus=0;load_acc=0;end if;n_staten_state=st0;end case;end if;end process COM;end behave; 3、 MAR设计:LIBRARY ieee;USE ieee.std_logic_1164.ALL;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;ENTITY mar ISport( clk,load:in std_logic; addr1:in std_logic_vector(3 downto 0); addr2:out std_logic_vector(3 downto 0);end mar;ARCHITECTURE behave of mar ISbegin process(clk) begin if rising_edge(clk)then if(load=1)then addr2=addr1; end if; end if; end process;end behave;4、 RAM设计:LIBRARY ieee;USE ieee.std_logic_1164.ALL;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;ENTITY ram IS port (clk,cs,r_nw: in std_logic;address: in std_logic_vector(3 downto 0); data: inout std_logic_vector(7 downto 0) );end ram;ARCHITECTURE behave OF ram ISBegin P0: process (clk) is type ram_array is array (0 to 15) of std_logic_vector(7 downto 0); variable mem: ram_array; variable ad:integer; BEGIN if rising_edge(clk)then ad:=conv_integer(address); if cs=0 then data Z); elsif r_nw=1 then data = mem(ad); elsif r_nw=0 then mem(ad):=data; end if;end if; end process;END behave;5、 MDR设计:LIBRARY ieee;USE ieee.std_logic_1164.ALL;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;ENTITY mdr ISport(clk,mdr_bus,load_mdr:in std_logic; data1,data2:inout std_logic_vector(7 downto 0) );end mdr;ARCHITECTURE behave OF mdr ISbegin process(clk) begin if rising_edge(clk)then if mdr_bus=1 then data1=data2; elsif load_mdr=1 then data2=data1; end if; end if; end process;end behave;6、 IR设计:LIBRARY ieee;USE ieee.std_logic_1164.ALL;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;ENTITY ir ISport(clk,addr_bus,load_ir:in std_logic; data:in std_logic_vector(7 downto 0); addr:out std_logic_vector(3 downto 0); op:out std_logic_vector(1 downto 0);end ir;ARCHITECTURE behave OF ir ISbegin process(clk) begin if rising_edge(clk)then if load_ir=1 then op=data(7 downto 6); elsif addr_bus=1then addr=data(3 downto 0); end if; end if; end process;end behave;7、 PC设计:LIBRARY ieee;USE ieee.std_logic_1164.ALL;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;ENTITY pc ISport(clk,pc_bus,load_pc,inc_pc:in std_logic; addr:out std_logic_vector(3 downto 0); data:in std_logic_vector(3 downto 0);end pc;ARCHITECTURE behave OF pc ISbeginprocess(clk)variable ar:std_logic_vector(3 downto 0);begin if rising_edge(clk)then if load_pc=1 then ar:=data; elsif pc_bus=1 then addr=ar; end if; if inc_pc=1 then ar:=ar+1; end if; end if;end process;end behave;8、 ACC设计:LIBRARY ieee;USE ieee.std_logic_1164.ALL;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;ENTITY acc IS port(acc_bus,clk,load_acc,alu_acc:IN std_logic; alu_ac:IN std_logic_vector(7 downto 0); bus_acc:INOUT std_logic_vector(7 downto 0) );end acc;ARCHITECTURE behave OF acc IS signal tmp:std_logic_vector(7 downto 0); begin process(acc_bus,clk,load_acc,alu_acc) begin if rising_edge(clk)then if alu_acc=1 then tmp=alu_ac; elsif load_acc=1 then tmp=bus_acc; elsif acc_bus=1 then bus_acc=tmp; end if; end if;end process;end behave;将以上各部分单元生成相应的器件,并使用单线把各个器件连接起来,构成整个CPU内部结构电路图,并建立波形文件进行功能仿真,从而得到了相应的实验结果。以下为CPU内部结构电路图:五、实验总结本次实验为完成一个简单微处理器的设计,通过分析CPU工作原理,可得CPU的工作流程:程序计数器PC到数据总线,通过总线到地址寄存器MAR MAR将PC传过来的数据信息送到只读内存ROM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025云南临沧市易成实验学校后勤人员招聘1人笔试考试备考题库及答案解析
- 2025西北工业大学航空学院郗恒东团队非事业编科研助理招聘1人笔试考试参考试题及答案解析
- 2025河南开封通许县特招医学院校毕业生招聘48人考试笔试参考题库附答案解析
- 2025年武汉纺织大学第二批人才引进18人考试笔试参考题库附答案解析
- 2025广东肇庆市鼎湖区人民武装部招聘民兵专职教练员8人笔试考试备考题库及答案解析
- 2025云南昆明市盘龙区师大实验昆明湖中学(中学部)招聘5人笔试考试备考试题及答案解析
- 2025福建晋江梧林君澜酒店有限责任公司常态化招聘项目制工作人员58人考试笔试备考题库及答案解析
- 中国石油大学(北京)油气资源与工程全国重点实验室招聘1人笔试考试备考题库及答案解析
- 2025山东青岛平度市中医医院 (青岛市海慈医疗集团平度院区)招聘高级人才7人笔试考试参考题库及答案解析
- 2025贵州黔东南州重点产业人才“蓄水池”第一批专项简化程序招聘考试笔试参考题库附答案解析
- 活动执行协议合同书
- 2025年超星尔雅学习通《生物学与生命科学》考试备考题库及答案解析
- 消化系统大肠解剖课件
- 脑机接口科普
- 落实企业安全生产主体责任知识试题及答案
- 产科个案护理标准化流程与管理要点
- 王阳明心学精要
- 2025至2030中国文化地产行业项目调研及市场前景预测评估报告
- 洁净机电施工方案
- 副食品配送合同协议
- 静脉曲张手术后护理
评论
0/150
提交评论