好文档 - 专业文书写作范文服务资料分享网站

计算机组成原理课程设计论文

天下 分享 时间: 加入收藏 我要投稿 点赞

END IF; END PROCESS; END A;

暂存器、通用寄存器、地址寄存器LS273:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY LS273 IS PORT(

D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC;

O:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END LS273;

ARCHITECTURE A OF LS273 IS BEGIN

PROCESS(CLK) BEGIN

IF(CLK'EVENT AND CLK='1') THEN O<=D; END IF; END PROCESS; END A;

1:2分配器FEN2:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY FEN2 IS PORT(

X:IN STD_LOGIC_VECTOR(7 DOWNTO 0); WR,LED_B:IN STD_LOGIC;

W1,W2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END FEN2;

ARCHITECTURE A OF FEN2 IS BEGIN

PROCESS(LED_B,WR) BEGIN

IF(LED_B='0' AND WR='0') THEN W2<=X; ELSE W1<=X; END IF; END PROCESS;

END A;

3选1数据选择器MUX3:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX3 IS PORT(

ID:IN STD_LOGIC_VECTOR(7 DOWNTO 0); SW_B,CS:IN STD_LOGIC;

N1,N2:IN STD_LOGIC_VECTOR(7 DOWNTO 0); EW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );

END MUX3;

ARCHITECTURE A OF MUX3 IS BEGIN

PROCESS(SW_B,CS) BEGIN

IF(SW_B='0') THEN EW<=ID;

ELSIF(CS='0')THEN EW<=N2; ELSE

EW<=N1; END IF; END PROCESS; END A;

5选1数据选择器MUX5:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX5 IS PORT(

C,D,E,F,G: IN STD_LOGIC;

X1,X2,X3,X4,x5: IN STD_LOGIC_VECTOR(7 DOWNTO 0); W: out STD_LOGIC_VECTOR(7 DOWNTO 0) );

END MUX5;

ARCHITECTURE A OF MUX5 IS

SIGNAL SEL: STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN

SEL<=G&F&E&D&C; PROCESS(SEL)

BEGIN

IF(SEL=\ W<=X1;

ELSIF(SEL=\ W<=X2;

ELSIF(SEL=\ W<=X3;

ELSIF(SEL=\ W<=X4;

ELSIF(SEL=\ W<=X5; ELSE

null; END IF; END PROCESS; END A;

程序计数器PC:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY PC IS PORT(

load,LDPC,CLR: IN STD_LOGIC;

D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); O: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END PC;

ARCHITECTURE A OF PC IS

SIGNAL QOUT: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

PROCESS(LDPC,CLR,load) BEGIN

IF(CLR='0') THEN QOUT<=\

ELSIF(LDPC'EVENT AND LDPC='1') THEN IF(load='0') THEN

QOUT<=D; --BUS->PC ELSE

QOUT<=QOUT+1; --PC+1 END IF; END IF;

END PROCESS; O<=QOUT; END A;

ROM芯片ROM16:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ROM16 IS PORT(

DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CS:IN STD_LOGIC );

END ROM16;

ARCHITECTURE A OF ROM16 IS BEGIN

DOUT<=\ \

\ \ \ \ \

\ \ \ \ \

\ \ \ \ \ \END A;

时序产生器COUNTER: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY COUNTER IS PORT(

Q,CLR: IN STD_LOGIC;

T1, T2,T3,T4: OUT STD_LOGIC );

END COUNTER;

ARCHITECTURE A OF COUNTER IS

SIGNAL X: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN

PROCESS(Q,CLR) BEGIN

IF(CLR='0') THEN T1<='0'; T2<='0'; T3<='0'; T4<='0'; X<=\

ELSIF(Q'EVENT AND Q='1') THEN X<=X+1;

T2<=(NOT X(1)) AND X(0); T3<=X(1) AND (NOT X(0)); T4<=X(1) AND X(0); END IF; END PROCESS; END A;

各个器件生成后,开始用自己设计的指令编写汇编程序,程序如下所示: MOV R1,0 ;寄存器R1用来存放最后的结果

MOV R2,0 ;寄存器R2放了一个立即数0,用来做是否负数判读以及做输入是 ;否达到5次的比较标准

MOV R3,5 ;记录输入次数,从5开始递减 INPUT:

IN1 R0 ;寄存器R0用来存放输入的数据

DEC R3 ;每输入一次则R3递减1,递减到0说明刚好输入5个数据 CMP R0,R2 ;判断输入的数据是否是负数 JB L1 ;如果是负数,则转到标号L1执行

CMP R2,R3 ;如果不是负数,则判断输入是否够5次 JB INPUT ;若不够5次则跳转到INPUT JMP L2 ;若够5次就跳转到L2执行 L1:

MUL R0,R0 ;负数球平方和

ADD R0,R1 ;求得的平方放入R1中 CMP R2,R3 ;比较是否够5次输入

计算机组成原理课程设计论文

ENDIF;ENDPROCESS;ENDA;暂存器、通用寄存器、地址寄存器LS273:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYLS273ISPORT(D:INSTD_LOGIC_VECTOR(7DOWNTO0);C
推荐度:
点击下载文档文档为doc格式
8y3mu0xfg91xu1x81h6j
领取福利

微信扫码领取福利

微信扫码分享