Estoy usando Xilinx ISE 13.1 x64 WebPack para una asignación universitaria y estoy implementando un BCT por el bien de ella. Es un ternario codificado en binario. Como un BCD, pero con solo tres dígitos (0, 1 y 2), para disminuir la cantidad de puertas lógicas. Hice todas las ecuaciones y se me ocurrió el circuito.
Pareceextrañoporque,alparecer,XilinxISEnopermitequelasredestenganmásdeunnombre.Entonces,comounaconvención,utilicélaletra'i'comopuntoycomayreunítodoslosnombresenunasolared.Lasredesquecomienzancon's'sonlossegmentosdeunapantalladesietesegmentos.'A'y'B'sonlasentradas.'Bisg'esINOUTporqueelsegmento'g'sigueelvalordelaentrada'B'.Elsegmento'b'siemprees'1'.Elsegmento'c'es'NOB'.Yasísucesivamente.
Prefieronousarunbúferparasepararlasentradasdelassalidasycrearredesconnombresdiferentes,porquequieroversiesposiblehacerlodeestamanera.Lared'Bisg'comoINOUTtienesentidoporqueelcircuitoexternoquelaalimentarátambiénalimentaráelcircuitoquenecesitalaseñal'g'delsegmento.
Sinembargo,cuandoprobéesto,nofuncionócomoseesperaba.Recordéacerolosvaloresalinicio,perocuandosesuponíaquedebíainvertirsuvalor,sefuea"indefinido" y se mantuvo allí. Aquí está el banco de pruebas:
-- Vhdl test bench created from schematic C:\Xilinx\projects\RelogioDigital\BCT.sch - Sat Mar 22 00:30:41 2014
--
-- Notes:
-- 1) This testbench template has been automatically generated using types
-- std_logic and std_logic_vector for the ports of the unit under test.
-- Xilinx recommends that these types always be used for the top-level
-- I/O of a design in order to guarantee that the testbench will bind
-- correctly to the timing (post-route) simulation model.
-- 2) To use this template as your testbench, change the filename to any
-- name of your choice with the extension .vhd, and use the "Source->Add"
-- menu in Project Navigator to import the testbench. Then
-- edit the user defined section below, adding code to generate the
-- stimulus for your design.
--
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
LIBRARY UNISIM;
USE UNISIM.Vcomponents.ALL;
ENTITY BCT_BCT_sch_tb IS
END BCT_BCT_sch_tb;
ARCHITECTURE behavioral OF BCT_BCT_sch_tb IS
COMPONENT BCT
PORT( Bisg : INOUT STD_LOGIC;
A : IN STD_LOGIC;
Bnisc : OUT STD_LOGIC;
sf : OUT STD_LOGIC;
saisdise : OUT STD_LOGIC;
sb : OUT STD_LOGIC);
END COMPONENT;
SIGNAL Bisg : STD_LOGIC := '0';
SIGNAL A : STD_LOGIC := '0';
SIGNAL Bnisc : STD_LOGIC;
SIGNAL sf : STD_LOGIC;
SIGNAL saisdise : STD_LOGIC;
SIGNAL sb : STD_LOGIC;
BEGIN
UUT: BCT PORT MAP(
Bisg => Bisg,
A => A,
Bnisc => Bnisc,
sf => sf,
saisdise => saisdise,
sb => sb
);
-- *** Test Bench - User Defined Section ***
A <= not A after 10 ns;
Bisg <= not Bisg after 20 ns;
tb : PROCESS
BEGIN
WAIT; -- will wait forever
END PROCESS;
-- *** End Test Bench - User Defined Section ***
END;
Desordenado ISim y encontré una opción para mostrar los controladores para una señal dada. Dice que tanto el banco de pruebas como la descripción de VHDL están dirigiendo esta señal a 'U'. En caso de que sea útil, aquí está el VHDL generado:
--------------------------------------------------------------------------------
-- Copyright (c) 1995-2011 Xilinx, Inc. All rights reserved.
--------------------------------------------------------------------------------
-- ____ ____
-- / /\/ /
-- /___/ \ / Vendor: Xilinx
-- \ \ \/ Version : 13.1
-- \ \ Application : sch2hdl
-- / / Filename : BCT.vhf
-- /___/ /\ Timestamp : 03/22/2014 00:31:07
-- \ \ / \
-- \___\/\___\
--
--Command: sch2hdl -intstyle ise -family spartan3 -flat -suppress -vhdl C:/Xilinx/projects/RelogioDigital/BCT.vhf -w C:/Xilinx/projects/RelogioDigital/BCT.sch
--Design Name: BCT
--Device: spartan3
--Purpose:
-- This vhdl netlist is translated from an ECS schematic. It can be
-- synthesized and simulated, but it should not be modified.
--
library ieee;
use ieee.std_logic_1164.ALL;
use ieee.numeric_std.ALL;
library UNISIM;
use UNISIM.Vcomponents.ALL;
entity BCT is
port ( A : in std_logic;
Bnisc : out std_logic;
saisdise : out std_logic;
sb : out std_logic;
sf : out std_logic;
Bisg : inout std_logic);
end BCT;
architecture BEHAVIORAL of BCT is
attribute BOX_TYPE : string ;
signal An : std_logic;
signal Bnisc_DUMMY : std_logic;
component INV
port ( I : in std_logic;
O : out std_logic);
end component;
attribute BOX_TYPE of INV : component is "BLACK_BOX";
component AND2
port ( I0 : in std_logic;
I1 : in std_logic;
O : out std_logic);
end component;
attribute BOX_TYPE of AND2 : component is "BLACK_BOX";
component OR2
port ( I0 : in std_logic;
I1 : in std_logic;
O : out std_logic);
end component;
attribute BOX_TYPE of OR2 : component is "BLACK_BOX";
component VCC
port ( P : out std_logic);
end component;
attribute BOX_TYPE of VCC : component is "BLACK_BOX";
begin
Bnisc <= Bnisc_DUMMY;
XLXI_1 : INV
port map (I=>A,
O=>An);
XLXI_5 : INV
port map (I=>Bisg,
O=>Bnisc_DUMMY);
XLXI_20 : AND2
port map (I0=>An,
I1=>Bnisc_DUMMY,
O=>sf);
XLXI_41 : OR2
port map (I0=>An,
I1=>Bisg,
O=>saisdise);
XLXI_42 : VCC
port map (P=>sb);
end BEHAVIORAL;
Entonces, ¿hay un error en lo que hice o es imposible superar la "falta de característica" de ISE y tener que recurrir a puertas lógicas adicionales?