Násobičky, Boothovo překódování. Demonstrační cvičení 7



Podobné dokumenty
Sčítačky Válcový posouvač. Demonstrační cvičení 6

Koncept pokročilého návrhu ve VHDL. INP - cvičení 2

Příklady popisu základních obvodů ve VHDL

Číslicové obvody a jazyk VHDL

Návrh. číslicových obvodů

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Úvod do jazyka VHDL. Jan Kořenek Návrh číslicových systémů

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Kódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP

Souhrn Apendixu A doporučení VHDL

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Jazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí

14. Složitější konstrukce

1. Seznamte se s výukovou platformou FITkit (

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Návrh ovládání zdroje ATX

Návrh FPGA systémů. Jazyk VHDL, principy simulace. Ing. Jakub Št astný, Ph.D. 1

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

2. Entity, Architecture, Process

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Základní znaky. - Ve srovnání se Spice jsou velmi složité a vyžadují dlouhou dobu na plné osvojení. - Velmi nákladné simulační programy.

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Implementace čítačů v číslicových systémech 2 Jakub Šťastný ASICentrum, s.r.o. FPGA Laboratoř, Katedra teorie obvodů FEL ČVUT Praha

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

PROGRAMOVATELNÁ LOGICKÁ POLE A JAZYKY HDL

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů:

Digitální technika. Jazyk VHDL, základy návrhu. Ing. Jakub Št astný, Ph.D. 1

r90>25=.nt>+>7z5n2k<1561/+;5n{.57u07k{16;5=.nt>+>7z5n2k<15n>29l.05,90>2/3k5n2k7,50{10;<o5>/>?ˆ581:+z6,561/+;

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Příklad č. 1 Přepis informace ze vstupů (SW0 až SW3) na ledky (LEDG0 až LEDG3)

Pokročilé využití jazyka VHDL. Pavel Lafata

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Vývoj VHDL. Verilog HDL

1 Stručný popis jazyku VHDL

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Cíle. Teoretický úvod. BDIO - Digitální obvody Ústav mikroelektroniky Základní logická hradla, Booleova algebra, De Morganovy zákony Student

12. VHDL pro verifikaci - Testbench I

VŠB - Technická univerzita Ostrava. Fakulta elektrotechniky a informatiky

7. Popis konečného automatu

Implementace čítačů v číslicových systémech Jakub Šťastný

Návrh základních kombinačních obvodů: dekodér, enkodér, multiplexor, demultiplexor

Integrované obvody. Obvody malé, střední a velké integrace Programovatelné obvody

Násobení. INP 2008 FIT VUT v Brně

Operace ALU. INP 2008 FIT VUT v Brně

Použití jazyka VHDL pro návrh číslicových obvodů

B i b l i o g r a f i c k á c i t a c e

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Číselnésoustavy, sčítáníasčítačky

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ KATEDRA ŘÍDICÍ TECHNIKY BAKALÁŘSKÁ PRÁCE

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Chapter Základní principy simulace :).

Návrh obvodů založených na programovatelných hradlových polích

Dělení. Demonstrační cvičení 8 INP

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ LABORATORNÍ PŘÍPRAVEK PRO VÝVOJ APLIKACÍ OBVODŮ CPLD FIRMY ALTERA

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

NÁVRH A REALIZACE MATEMATICKÝCH OPERACÍ V OBVODECH FPGA

Úvod do problematiky obvodů FPGA pro integrovanou výuku VUT a VŠB-TUO

OPERAČNÍ PROGRAM PRAHA ADAPTABILITA & EU:

České vysoké učení technické v Praze Fakulta elektrotechnická BAKALÁŘSKÁ PRÁCE

Příkladný úvod do VHDL

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.


VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

LOGICKÉ OBVODY 2 kombinační obvody, minimalizace

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Implementace procesorů v obvodech FPGA

Cíle. Teoretický úvod

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

Simulace číslicových obvodů na hradlové úrovni: model návrhu Jakub Šťastný ASICentrum, s.r.o. Katedra teorie obvodů FEL ČVUT Praha

Struktura a architektura počítačů (BI-SAP) 4

Struktura a architektura počítačů (BI-SAP) 6

Y36SAP Y36SAP-2. Logické obvody kombinační Formy popisu Příklad návrhu Sčítačka Kubátová Y36SAP-Logické obvody 1.

České vysoké učení technické v Praze Fakulta elektrotechnická. Automatické generování VHDL kódu pro FPGA

Open-Source nástroje pro práci s FPGA

Závěrečná zkouška z informatiky 2011

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

3. Aritmetika nad F p a F 2

Y36SAP - aritmetika. Osnova

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

SYSTEMC NÁSTROJE A PROSTŘEDÍ PRO NÁVRH SYSTÉMŮ

ŘÍZENÍ FYZIKÁLNÍHO PROCESU POČÍTAČEM

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Moderní metody zpracování obrazu strukturou FPGA

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

NA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz

Aritmetické operace a obvody pro jejich realizaci

Verifikace pomocí assertions: případové studie Jakub Šťastný ASICentrum, s.r.o. FPGA Laboratoř, Katedra teorie obvodů FEL ČVUT Praha

Střední odborná škola a Střední odborné učiliště, Dubno Ing. Miroslav Krýdl Tematická oblast ELEKTRONIKA

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

EIZO předpoklady pro precizní zobrazení a diagnostiku

Aritmetika s velkými čísly na čipové kartě

Čísla v plovoucířádovéčárce. INP 2008 FIT VUT v Brně

Architektura počítačů Logické obvody

3. REALIZACE KOMBINAČNÍCH LOGICKÝCH FUNKCÍ


Digitální učební materiál

Transkript:

Násobičky, Boothovo překódování INP Demonstrační cvičení 7

Obsah Princip násobení Sekvenční a kombinační násobička Kombinační násobičky ve VHDL Násobení se znaménkem (FX) Boothovo překódování, VHDL

Násobení s pevnou řádovou čárkou

Sekvenční násobička (Postupně) dodáme bity operandů A a B, přivedeme hodinový signál CLK a po k taktech získáme součin C Zpoždění je dáno max. možnou frekvencí CLK a počtem taktů nutných k výpočtu Výhoda: plocha na čipu, Nevýhoda: rychlost

Kombinační násobička Dodáme operandy A a B a čekáme na součin C Zpoždění je obvykle dáno zpožděním logiky na cestě k nejvyššímu bitu součinu Výhoda: rychlost, Nevýhoda: plocha na čipu 12 10 12 1 7 6 7 8 10 4 6 5 8 2 4 5 1 2 1 Výsledné zpoždění 16x zpoždění logického členu 16 14 16 12 14 9 12 9

Násobička s uchováním přenosu ve VHDL entity MULT is port ( A, B : in std_logic_vector(3 downto 0); PROD : out std_logic_vector(7 downto 0)); end MULT; architecture RTL1 of MULT is constant N : integer := 4; subtype p1ary is std_logic_vector(n-1 downto 0); type pary is array(0 to N) of p1ary; signal PP, PC, PS : pary; component FA - full adder port ( A, B, CI : in std_logic; S, COUT : out std_logic); end component; component ANDG - and gate port ( A, B : in std_logic; C : out std_logic); end component; subtype = omezená podmnožina typu PP-partial product PC-partial carry PS-partial sum j-row number k-column number

begin pgen : for j in 0 to N-1 generate pgen1 : for k in 0 to N-1 generate and0 : ANDG port map ( A => A(k), B => B(j), C => PP(j)(k)); PC(0)(j) <= '0'; PS(0) <= PP(0); PROD(0) <= PP(0)(0); -- nultý bit výsledku vytvoříme částečné součiny addr : for j in 1 to N-1 generate addc : for k in 0 to N-2 generate fa0 : FA port map ( A => PP(j)(k), B => PS(j-1)(k+1), CI => PC(j-1)(k), S => PS(j)(k), COUT => PC(j)(k)); PROD(j) <= PS(j)(0); PS(j)(N-1) <= PP(j)(N-1); PC(N)(0) <= '0';

begin pgen : for j in 0 to N-1 generate pgen1 : for k in 0 to N-1 generate and0 : ANDG port map ( A => A(k), B => B(j), C => PP(j)(k)); PC(0)(j) <= '0'; PS(0) <= PP(0); PROD(0) <= PP(0)(0); -- nultý bit výsledku addr : for j in 1 to N-1 generate addc : for k in 0 to N-2 generate fa0 : FA port map ( A => PP(j)(k), B => PS(j-1)(k+1), CI => PC(j-1)(k), S => PS(j)(k), COUT => PC(j)(k)); PROD(j) <= PS(j)(0); PS(j)(N-1) <= PP(j)(N-1); PC(N)(0) <= '0'; Sčítačky řádků 1..N-1 PP-partial product PC-partial carry PS-partial sum j-row number k-column number

Sčítačky v posledním řádku addlast : for k in 1 to N-1 generate fa1 : FA port map ( A => PS(N-1)(k), B => PC(N-1)(k-1), CI => PC(N)(k-1), S => PS(N)(k), COUT => PC(N)(k)); PROD(2*N-1) <= PC(N)(N-1); PROD(2*N-2 downto N) <= PS(N)(N-1 downto 1); end RTL1; PP-partial product PC-partial carry PS-partial sum j-row number k-column number

Plocha a doba výpočtu Předpokládejme násobení N-bitů x M-bitů Potřebujeme (N-1)*M sčítaček (některé mohou být poloviční) Zpoždění (předpokládejme, že zpoždění 1 FA odpovídá zpoždění 2 hradel) + 1 x hradlo AND (první částečný součin) + M-1 řádků sčítaček + N-1 sčítaček v posledním řádku + Celkem 2*(M-1 + N-1) + 1 [zpoždění hradla]

Násobení čísel se znaménkem -4*-14 na 4b+1b na znaménko => 2x5b => zn. až do 10b!!! (-4) 1111111100 (-14) 1111110010 00000 1111111100 00000 00000 1111111100 1111111100 1111111100 1111111100 1111111100 1111111100 0 0000111000b Nutnost šířit znaménko dílčích součinů a sčítat dílčí součiny i pro bity rozšířeného znaménka násobitele. (+56d) Možné řešení: použití Boothova překódování

Boothovo překódování po 1 bitu (radix 2) Překódujeme násobitel podle tabulky: překódovávaný bit bit vpravo kód 0 0 0 0 1 1 1 0-1 1 1 0 Příklad (4b+1b zn.): -4 x 14-4 = 11100, +4 = 00100, -14 = 10010 Překódování -14: 100100 -> -1 0 1-1 0 111 00 (-4) -101-10 (-7) 0 (0) 00100 (+4) 1111100 (-4) => 5 součtů namísto deseti 0 (0) 00100 (+4) 1000111000(=56)

Boothovo překódování po 2 bitech (radix 4) překódovávané bity bit vpravo kód 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 2 1 0 0-2 1 0 1-1 1 1 0-1 1 1 1 0 Musíme přejít na sudý počet bitů (6) umožňující zobrazit též dvojnásobky násobence. Př. 7 x 10: 7=000111, -10=110110 Překódujeme násobitel: -1 2-2 -7=111001 14=001110-14=110010 000111 (7) -1 2-2 (-10) 11111110010 (-14) posun o 2 bity 000001110 (+14) 1111001 (-7) 111110111010(-70) Vroubení znaménka 000111 (7) 1-1 2-2 (-10) 10110010 (-14) 11001110 (+14) 10111001 (-7) 111110111010 (-70)

Boothovo překódování s radixem 4 ve VHDL library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity RECODER is port ( DIN : in std_logic_vector(15 downto 0); BIT3 : in std_logic_vector( 2 downto 0); DOUT : out std_logic_vector(16 downto 0)); end RECODER; architecture RTL of RECODER is constant N : integer := 16; subtype bitn1 is std_logic_vector(n downto 0); function COMP2 (D : in bitn1) return bitn1 is variable Dn : bitn1; begin Dn := not D; return(dn+1); end COMP2; Příklad funkce ve VHDL (vrací dvojkový doplněk D)

Boothovo překódování s radixem 4 ve VHDL (2) begin process (DIN, BIT3) begin case BIT3 is when "001" "010" => DOUT <= DIN(N-1) & DIN; when "101" "110" => DOUT <= COMP2(DIN(N-1) & DIN); when "100" => DOUT <= COMP2(DIN & '0'); when "011" => DOUT <= DIN & '0'; when others => DOUT <= (DOUT'range => '0'); end case; end process; end RTL; překódovávané bity bit vpravo kód 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 2 1 0 0-2 1 0 1-1 1 1 0-1 1 1 1 0

Boothovo překódování: radix 16 Postup podle obecného Boothova algoritmu: 1. Zopakujeme nejvyšší bit skupiny 2. K takto získané hodnotě přičteme hodnotu nejvyššího bitu skupiny vpravo od překódovávané skupiny 3. Výsledná hodnota je binárním vyjádřením relativní číslice Úloha: překódujte číslo -600 na 12 bitech -600 = 1 1 0 1 1 0 1 0 1 0 0 0

Literatura Drábek, V.: Výstavba počítačů, skriptum VUT v Brně, 1995. Chang, K. C.: Digital Design and Modeling with VHDL and Synthesis. Chang, K. C.: Digital Systems Design with VHDL and Synthesis.