Conception et exploitation des processeurs
De ... à ...
Quelques précisions
Mémoire RAM synchrone
architecture Behavioral of RAM_PROG is
subtype mot is std_logic_vector(31 downto 0);
type zone_memoire is array (natural range 0 to 2048) of mot;
constant m0: zone_memoire :=(
0 => x"3c1cdead", -- lui $28,0xdead
1 => x"379cbeef", -- ori $28, $28, 0xbeef
others => x"ffffffff" --Reset
);
signal m: zone_memoire := m0;
begin
process(clk)
begin
if (clk’event AND clk=’1’) then
if we=’1’ then
m(conv_integer(addr)) <= di;
end if;
do <= m(conv_integer(addr));
end if;
end process;
end Behavioral;
10 / 20
Conception et exploitation des processeurs
De ... à ...
Structure finale
CLK
Reset
MMIPS_CPU.vhd
debugout
LEDs
MMIPS_et_environnement.vhd
IP_DEBUG.vhd
addr
datain
we
dataout
ce
debugoutvalid
RAM_PROG.vhd
addr
di
do
we
clk_gen.vhd
CLK50 CLK
IP_SWITCH.vhd
Interrupteurs
IP_7SEG.vhd
Afficheurs 7 segments
VGA.vhd
R
G
B
HS
VS
GeneRGB.vhd
GeneSync.vhd
doa
dia
addra
wea
RAM_VIDEO.vhd
addr
addr
addr
dout dout
dout
dout
din_switch
din_ram_prog
din_ram_video
we_ram_prog
we_ram_video
we_7seg
din_ram_prog din_ram_video
din_switch
we_7seg
we_ram_prog
we_ram_video
we_7seg
MMIPS_bus.vhd
11 / 20
Conception et exploitation des processeurs
De ... à ...
Quelques précisions
Bus pour accès différents composants : principes
Écriture combinatoire :
processeur positionne addr/dataout/we=1/ce=1
bus décode adresses pour calcul we_ram_prog,
we_ram_video,we_7seg (mutuellement exclusifs)
dataout échantillonné par composant avec we_... = 1 sur
clk ↑
Lecture séquentielle :
processeur positionne addr/datain/ce=1
sur clk ↑, composants produisent din_ram_prog,
din_switch,din_ram_video, bus échantillonne addr
bus utilise addr échantillonné pour décoder quel signal
din_... produire sur datain
12 / 20
Notes
Notes
Notes