180 likes | 293 Views
M agas szint ű hardware szintézis. M agas szint ű hardware szintézis. M agas szint ű hardware szintézis. Viselkedési leírásból (C nyelvű leírásból) vezérlés és adatfolyam gráf transzformáció. M agas szint ű hardware szintézis. A magas szintű HW szintézis előnyei.
E N D
Magas szintű hardware szintézis Viselkedési leírásból (C nyelvű leírásból) vezérlés és adatfolyam gráf transzformáció
Magas szintű hardware szintézis A magas szintű HW szintézis előnyei • 1. Rövidebb tervezési ciklus • 2. Alacsonyabb tervezési költségek • 3. Kisebb gyártási költségek • 4. Kevesebb tervezési hiba • 5. Tervezési kompromisszumok könnyebb meghozatala (több verzió elkészíthető a döntés ezek ereményének ismeretében hozható meg) • 6. A dokumentáció gyorsabban és standardizálva készül • 7. Specifikáció módosítás, változó körülményekhez, feltételekhez való igazítás könnyebben, gyorsabban végezhető el
Magas szintű hardware szintézis A magas szintű szintézis részfeladatai ·Allokáció: az erőforrások feladatokhoz rendelése erőforrás típusok meghatározása, erőforrások számának meghatározása erőforrás: műveletvégző adattároló adatút (MUX, BUSZ) ·Ütemezés: műveletek ütemekhöz, időlépésekhez rendelése, diszkrét időlépések, szinkron szekvenciális hálózat adatfüggőség befolyásolja ·Modulok kiválasztása: erőforrás könyvtárból kiválasztjuk, hogy milyenerőforrástípusok vannak szempontok sebesség helyigény tápfelvétel ·Bekötés: műveletvégzőművelet összerendelése tárolásregiszterek, memória ·Vezérlés létrehozása, optimalizálása az ütemzést biztosító FSM létrehozás Speciális szempont: párhuzamosítás
Algoritmikus leírás Fordítás Adatfolyam gráf kényszerek kényszerek Ütemezés Allokáció Adatút diagram CimkézettAdatfolyam gráf Regiszterek (adattárolók) FSM Magas szintű hardware szintézis
Ütemezés-allokáció Párhuzamosítás g, e és c egy-egy ADD, SUB, COM
VHDL kód a vezlérlőről case CurrentState when S0 => a; b; p; NextState <= S1; when S1 => d; k; q; NextState <= S2; when S3 => if not(p) then if (q) then i; NextState <= S4; else c; NextState <= S4; end if; end if; when S4 => if (q) then else h; NextState <= S5; end if; end if; when S5 => l; NextState <= S6; else m; NextState <= S6; end if; if not(p) then j; NextState <= S5; if not(p) then when S6 => n; NextState <= S0; end case; S0 S1 S2 S3 S4 S5 S6
Erőforrás bekötés Sok mux
Állapot hozzárendelés Lokális szeletelés(a) globális szeletelés (b)
VHDL kód res_CMP_4_in0_MUXES: PROCESS(CURRENT_STATE, regNum1, hT0, regNum0, hT1, hT39, regNum6) variable mux_select : std_logic_vector(7 downto 0); BEGIN mux_select := "00000000"; if (CURRENT_STATE(1) = '1') then mux_select(0) := '1'; end if; if (CURRENT_STATE(3) = '1' and hT0) then mux_select(1) := '1'; end if; if (CURRENT_STATE(4) = '1' and hT0 and hT1 and NOT(hT39)) then mux_select(2) := '1'; end if; if (CURRENT_STATE(5) = '1' and hT0 and hT1 and NOT(hT39)) then mux_select(3) := '1'; end if; case mux_select is when "00000001" => res_CMP_4_in0 <= regNum1; when "00000010" => res_CMP_4_in0 <= regNum0; when "00000100" => res_CMP_4_in0 <= regNum1; when "00001000" => res_CMP_4_in0 <= regNum6; when others => res_CMP_4_in0 <= 0; END CASE; END PROCESS; -- res_CMP_4_in0_MUXES END PROCESS;