2017-03-24 3 views
0
synthetisieren

Ich schrieb einen einfachen Volladdierer, der 2 Halbaddierer und ein ODER-Gatter verwendet. Der VHDL-Code ist ziemlich einfachVolladdierer mit ISE

library ieee; 
use ieee.std_logic_1164.all; 

entity ha is 
    port(x: in std_logic; 
     y: in std_logic; 
     s: out std_logic; 
     c: out std_logic); 
end; 
architecture x of ha is 
begin 
    s <= x xor y; 
    c <= x and y; 
end; 

und

library ieee; 
use ieee.std_logic_1164.all; 

entity fa is 
    port(a: in std_logic; b: in std_logic; cin: in std_logic; 
     sum: out std_logic; cout: out std_logic); 
end; 
architecture y of fa is 
    component ha port(x: in std_logic; y: in std_logic; 
        s: out std_logic; c: out std_logic); 
    end component; 
    signal im1, im2, im3: std_logic; 
begin 
    ha1: ha port map(x=>a, y=>b, s=>im1, c=>im2); 
    ha2: ha port map(x=>im1, y=>cin, s=>sum, c=>im3); 
    cout <= im3 or im2; 
end; 

Der Ausgang des Synthesizers zeigt jedoch gibt es zwei XOR-Gatter. Wo sind das ODER-Gatter und andere für Halbaddierer?

========================================================================= 
*      Advanced HDL Synthesis       * 
========================================================================= 
Advanced HDL Synthesis Report 

Macro Statistics 
# Xors             : 2 
1-bit xor2           : 2 

========================================================================= 

Auch die RTL schematische Darstellung des FA richtig, ist die RTL schematische Darstellung des Halbaddierers jedoch seltsam ist! Der Port y ist nicht vorhanden und es gibt Daten [1: 0]. Was bedeutet das?

FA:

enter image description here

HA:

enter image description here

Antwort

1

ich den Vivado Synthesizer leave Sachen gesehen habe regelmäßig über die Makro-Statistiken aus. Makroberichte sind für ein FPGA-Design nicht wirklich sinnvoll, da Ihre gesamte Logik tatsächlich in LUTs abgebildet wird. In diesem Fall sieht es so aus, als ob Ihre Basis- und/oder Gatter nicht als Makros betrachtet werden, sondern ein XOR (wie es durch eine Box im Schaltplan anstelle eines Logiksymbols angezeigt wird).

Soweit Ihr Halbaddierer-Schaltplan, haben die Werkzeuge Ihre zwei Einzelbit-Eingangsports in einem Zwei-Bit-Bus kombiniert. Die Dreiecke vor dem and-Gatter sind Abgriffe auf diesem Bus, um eines der zwei Bits herauszuziehen. Es ist nur eine andere Möglichkeit, dasselbe darzustellen.

+0

Die Dreiecke sind Puffer, denke ich. Immer noch ist das Schema komisch. Der Eingangsport x wird mit zwei Signalen Daten [0] und Daten [1] betrachtet. Ich frage mich, warum es nicht x und y gesetzt – mahmood

+0

Nein, sie sind keine Puffer. Ich verstehe, dass ein Dreieck häufig als schematisches Symbol für einen Puffer verwendet wird. In diesem Fall sind sie Bus-Taps. Synthesizer benennen das Zeug ständig um; Es macht es zu einem Schmerz zu lesen, aber anscheinend bessere Ergebnisse. – QuantumRipple

Verwandte Themen