Budapesti Műszaki és Gazdaságtudományi Egyetem Egyszerű mikroprocesszor RTL modellek (VHDL) Horváth Péter Elektronikus Eszközök Tanszéke 2014. augusztus 11. Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 1 / 17
Alapok RTL modellezés alapfogalmak elnevezés: Register-Transfer Level: az adattároló elemek közötti adatáramlást írjuk le nyelvek: tipikusan hardverleíró nyelvek (VHDL, Verilog), de a rendszerszintű modellező nyelvek (SystemVerilog, SystemC stb.) is le tudják írni ezt a fajta absztrakciót nyelvi eszközök: a hardverleíró nyelvek nyelvi szerkezeteinek csak egy részhalmaza tartozik az RTL nyelvi eszközök közé (szintetizálható nyelvi szerkezetek) az RTL modell a legmagasabb elvonatkoztatási szintű modell, ami a klasszikus eszközökkel szintetizálható Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 2 / 17
Nyelvi eszközök Leggyakoribb nyelvi szerkezet folyamat Az RTL modellek egyik leggyakrabban alkalmazott nyelvi szerkezete a folyamat (VHDL-ben process, Verilog-ban always-block). Leírhatók vele kombinációs hálózatok (kombinációs folyamat) és szinkron hálózatok (szinkron folyamat) egyaránt. Szerkezete érzékenységi lista: jelek halmaza, amelyek változása a folyamat törzsének lefutását eredményezi törzs: sorrendi utasítások, amelyek akkor hajtódnak végre, ha az érzékenységi listán valami változás történt A fenti viselkedést mindegyik RTL modellező nyelv implementálja valamilyen formában (VHDL, Verilog egyértelmű, SystemC-t lásd később) Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 3 / 17
Nyelvi eszközök Leggyakoribb nyelvi szerkezet folyamat Kombinációs folyamat: minden jobbérték az érzékenységi lista része L_ADDER : process ( op_a, op_b ) begin result <= unsigned ( op_a ) + unsigned ( op_b ); end process ; Szinkron folyamat: CSAK az órajel (és legfeljebb az aszinkron reset) van az érzékenységi listában L_REGISTER : process ( clk ) begin if ( rising_edge ( clk ) ) then if ( reset = 1 ) then dout <= ( others => 0 ); elsif ( ce = 1 ) then dout <= din ; end if; end if; end process ; Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 4 / 17
Nyelvi eszközök Állapotgépek Az RTL modellekben központi szerepe van az állapotgépek leírásának. Feladatai: vezérlési feladatok esetén a kimenetek időzítése, adatfeldolgozás esetén a műveletvégző erőforrások (ALU, regiszterek stb.) vezérlő jeleinek előállítása Részei állapotregiszter következőállapot-logika kimeneti logika HDL modellezés módjai egy-process: az összes kimenet szinkron (nagy erőforrásigény, glitch-mentes vezérlési vonalak) két-process: kisebb erőforrásigény, Mealy-bemenetek okozhatnak problémát három-process: a szintézis kimenete ua., mint a két-process megoldásnál Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 5 / 17
Mikroprocesszor RTL modellje HW/SW partícionálás Az RTL modell elkészítésekor a kiindulási alap általában valamilyen magasabb szintű modell (procedurális vagy objektum-orientált) El kell dönteni, hogy mit valósítunk meg hardverben és mi az, ami majd egy processzoron futó programként valósul meg. Az assembler + mikroprocesszor modell esetén ez egyszerű az assembler a leendő mikroprocesszoros rendszer szoftver komponense a mikroprocesszor magjáról, az utasításmemóriáról és az adatmemóriáról hardvermodell készül Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 6 / 17
Mikroprocesszor RTL modellje HDL forrásfájlok 00_package_demo_processor.vhd: konstansok definíciója 01_memories.vhd: utasítás- és adatmemória modellje 02_core.vhd: a mikroprocesszor két különböző RTL implementációja 03_structural_RTL_components.vhd: a strukturális RTL modell műveletvégző egységének komponensei 04_structural_RTL_datapath.vhd: a strukturális RTL modell műveletvégző egysége 05_structural_RTL_controller.vhd: a strukturális RTL modell vezérlő állapotgépe 06_testbench.vhd: tesztkörnyezet Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 7 / 17
Mikroprocesszor RTL modellje Memóriák Az utasítás- és adatmemória modelljei egyazon HDL forrásfájlban: 01_memories.vhd Mindkét modell generikus; címhossz és szóméret. Az utasításmemória a tesztprogram gépi kódjával, az adatmemória a bemenő adatokkal inicializált. Mindkét memória szinkron kimenetű. address_width clk data_in write_enable data_out content[address] data_width data_in address data_out data_width 0xEA 0xEA write_enable clk 0xEA Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) / 17
Mikroprocesszor RTL modellje A mikroprocesszor A mikroprocesszor RTL modelljei viselkedési RTL: A mikroprocesszor "monolit" megvalósítása. Egyetlen állapotgép, amely minden adat-manipulációt leír. A processzor belső erőforrási belső jelekként jelennek meg. strukturális RTL: A mikroprocesszor "finomabb felbontású" modellje. Nyelvi szinten megjelenik a műveletvégző - vezérlő szerkezet. A belső erőforrások különálló tervezési egyedek. A két RTL modell egyazon tervezési egyed (entity) két különálló implementációjaként (architecture) van leírva. (behavioral_rtl és structural_rtl) Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 9 / 17
Mikroprocesszor RTL modellje Hierarchia A testkörnyezet (06_testbench.vhd) példányosítja a mikroprocesszort, az utasítás- és adatmemóriát. Az órajelet és a stimulust is előállítja. entity testbench entity instruction_cache architecture behavior entity core architecture behavioral_rtl entity data_cache architecture behavior process clock process reset,run architecture structural_rtl controller datapath + Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 10 / 17
RTL implementációs részletek Viselkedési RTL modell A mikroprocesszor viselkedése egyetlen állapotgépben van leírva. Az adattároló erőforrások belső jelekként, az adatmanipuláló erőforrások a nyelv beépített operátorain keresztül valósulnak meg. type RF_type is array (0 to 15) of signed (7 downto 0); signal RF: RF_type := ( others => ( others => 0 )); signal op_a : signed (7 downto 0) := ( others => 0 ); signal op_b : signed (7 downto 0) := ( others => 0 ); signal imm : signed (7 downto 0) := ( others => 0 ); case state is when execute => case instruction_code is when i_i2rf => RF( destination ) <= imm ; state <= assert_flags ; when i_m2rf => state <= data_cache_read_access ; when i_rf2m => write_data_cache <= 1 ; state <= data_cache_write_access ; when i_add => RF( destination ) <= op_a + op_b ; state <= assert_flags ; end case ; end case ; Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 11 / 17
RTL implementációs részletek Strukturális RTL modell A strukturális RTL modell két fő komponensből áll műveletvégző egység (04_structural_RTL_datapath.vhd), amely az adattároló (regiszterek és regisztertömbök) és adatmanipuláló (operátorok) erőforrások példányosítását tartalmazza vezérlő egységet leíró állapotgép (04_structural_RTL_controller.vhd) A structural_rtl architektúra csak e két komponens példányosítását és összeköttetéseiket tartalmazza. Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 12 / 17
RTL implementációs részletek Strukturális RTL komponensek adattárolás wa din data_width RF we_rf ce clk reset data_width di do reg addr_width addr_width addr_width aa ab ac doc data_width data_width doa dob data_width data_width clk clk di ce do reset 0xEA 0xEA 0x00 data_in write_enable aa; wa doa content[11] 0xEA 0x0B 0xEA 0xEA Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 13 / 17
RTL implementációs részletek Strukturális RTL modell ALU Az aritmetikai-logikai egység egy kombinációs folyamatként van megvalósítva. L_MAIN_PROCESS : process ( alu_function, op_a, op_b ) variable v_result : signed (7 downto 0); begin case alu_function is when a_add => v_result := signed ( op_a ) + signed ( op_b ); when a_sub => v_result := signed ( op_a ) - signed ( op_b ); when a_and => v_result := signed ( op_a and op_b ); when a_or => v_result := signed ( op_a or op_b ); when a_xor => v_result := signed ( op_a xor op_b ); when others => v_result := signed ( op_b ); end case ; result <= std_logic_vector ( v_result ); if ( v_result = 0 ) then Z_out <= "1"; else Z_out <= "0"; end if; if ( v_result (7) = 1 ) then N_out <= "1"; else N_out <= "0"; end if; end process ; Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 14 / 17
RTL implementációs részletek Strukturális RTL modell műveletvégző egység A műveletvégző egység az erőforrások példányosításából és összeköttetéseikből áll. signal from_ir : std_logic_vector (15 downto 0); signal from_mux_ip : std_logic_vector (7 downto 0); signal from_ip : std_logic_vector (7 downto 0); L_IR : entity work. standard_register ( behavior ) generic map (16) port map (clk, reset, ce_ir, data_from_instruction_cache, from_ir ); L_MUX_IP : entity mux2 ( behavior ) generic map () port map ("00000000", from_ip_add_result, sel_ip, from_mux_ip ); L_IP : entity work. standard_register ( behavior ) generic map () port map (clk, reset, ce_ip, from_mux_ip, from_ip ); Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 15 / 17
RTL implementációs részletek Strukturális RTL modell vezérlő egység A vezéslő egység egy egy-process megvalósítású állapotgép. A kimeneti buffer-ek glitch-mentesítik a vezérlő vonalakat és csökkentik a clock-to-output késleltetést. case state is when wait_for_run => if ( run = 1 ) then end_of_job <= 0 ; sel_ip <= 0 ; ce_ip <= 1 ; state <= fetch_1 ; else state <= wait_for_run ; end case ; end if; Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 16 / 17
RTL implementációs részletek Strukturális RTL mdoell RTL kapcsolási séma address_to_instruction_cache data_from_instruction_cache data_to_data_cache address_to_data_cache data_from_data_cache 16 structural_rtl_datapath 0 ce_ir IR run 0 1 end_of_job we_rf write_data_cache sel_ip_add sel_ip ce_ip IP 1 1 0 + 4 [11:] 16 [7:4] [3:0] [11:] [15:12] [7:0] 4 ce_dest. destination 4 we_rf RF wa din 4 aa 4 ab 4 ac doc doa dob + ce_ir ce_ip ce_instruction_code ce_destination ce_op_a ce_op_b ce_imm ce_mar ce_mdr ce_z ce_n sel_ip sel_ip_add sel_alu ss_instruction_code ss_z ss_n structural_rtl_controller ce_instr.c. ce_imm ce_op_a ce_op_b ce_mar ce_mdr instr_code imm op_a op_b MAR MDR 4 ss_instruction_code 0 2 1 sel_alu opcode alu_f. instr_dec. 3 opa func. Z_out ALU opb N_out ce_z ce_n Z result N ss_z ss_n Horváth Péter Egyszerű mikroprocesszor RTL modellek (VHDL) 17 / 17