A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Digitais Projeto 2ª Unidade CPU.

Apresentações semelhantes


Apresentação em tema: "Sistemas Digitais Projeto 2ª Unidade CPU."— Transcrição da apresentação:

1 Sistemas Digitais Projeto 2ª Unidade CPU

2 Arquitetura/plataforma de prototipação
Sistemas Digitais

3 Conjunto de instruções
INSTRUÇÂO OPCODE Add endereço : Ac <= Ac + conteúdo endereço .: Store endereço: endereço dado <= Ac : Load endereço: Ac <= conteúdo do endereço : Jump endereço: Pc <= endereço : JNEG endereço: Se Ac < 0 Pc <= endereço : Sub endereço: Ac <= Ac - conteúdo endereço .: In (Leitura) dispositivo : Lê do dsipositivo : Out (Escrita) dispositivo : Escreve no dispositivo .: Sistemas Digitais

4 Declaração da CPU LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CPU IS PORT( clock : IN STD_LOGIC; reset : IN STD_LOGIC; bus_data_in_register : IN STD_LOGIC_VECTOR(1 downto 0); ... memory_address_register : OUT STD_LOGIC_VECTOR(7 downto 0); ); Sistemas Digitais

5 Modelo de arquitetura --Aqui deve constar a declaração dos sinais e dos estados BEGIN PROCESS (clock, reset) IF (reset = '1') THEN state <= reset_pc; ELSIF (clock'EVENT AND clock = '1') THEN CASE state IS WHEN reset_pc => program_counter <= " "; memory_address_register <= " "; memory_data_out_register <= " "; register_AC <= " "; bus_data_out_register <= "00"; bus_address_register <= "00"; memory_write <= '0'; state <= fetch; Sistemas Digitais

6 Alguns estados WHEN fetch =>
program_counter <= program_counter + 1; memory_write <= '0'; state <= fetch1; WHEN decode => memory_address_register <= instruction_register(7 DOWNTO 0); CASE instruction_register(15 DOWNTO 8) IS WHEN " " => state <= execute_add; WHEN " " => state <= execute_store; ... -- continua outros estados; WHEN OTHERS => state <= fetch; END CASE; Sistemas Digitais

7 Alguns Estados (cont) ... WHEN execute_jump =>
memory_address_register <= instruction_register(7 DOWNTO 0); program_counter <= instruction_register(7 DOWNTO 0); state <= fetch; WHEN execute_out => bus_address_register <= instruction_register(1 DOWNTO 0); bus_data_out_register <= register_ac (1 DOWNTO 0); memory_address_register <= program_counter; WHEN OTHERS => Sistemas Digitais

8 Unidade de mapeamento A unidade de mapeamento será o “estágio” final do projeto. Ela conterá os componentes utilizados (cpu, memória, decoder, drivers ...) e fará a ligação entre os mesmos utilizando sinais (fios). Esse mapeamento deve ser feito em VHDL utilizando a sintaxe de PORT MAP Sistemas Digitais

9 Unidade de mapeamento LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
ENTITY robot IS PORT( clock : IN STD_LOGIC; reset : IN STD_LOGIC; motorControl1 : IN STD_LOGIC_VECTOR(1 DOWNTO 0); ... motorOut1 : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); ); END robot; Sistemas Digitais

10 Unidade de mapeamento(cont)
-- declaração dos sinais usados ... -- declaração dos componentes usados COMPONENT decoder PORT( clock : IN STD_LOGIC; busAddress : IN STD_LOGIC_VECTOR(1 downto 0); CSMotor1 : OUT STD_LOGIC; CSMotor2 : OUT STD_LOGIC; muxSelector : OUT STD_LOGIC ); END COMPONENT; Sistemas Digitais

11 Mapeamento ... BEGIN U1: decoder PORT MAP(clock => clock, busAddress => bus_address, CSMotor1 => chip_select_motor1, CSMotor2 => chip_select_motor2, muxSelector => chip_select_mux ); U2: driver PORT MAP(reset => reset, chipSelect => chip_select_motor1, busData => bus_data_out, motorSignal => motorOut ); Sistemas Digitais


Carregar ppt "Sistemas Digitais Projeto 2ª Unidade CPU."

Apresentações semelhantes


Anúncios Google