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:
HA:
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
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