Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

XST warning tristates replaced by pull-up

Status
Not open for further replies.

cmos babe

Full Member level 4
Joined
Jan 15, 2005
Messages
209
Helped
11
Reputation
22
Reaction score
0
Trophy points
1,296
Location
Dubai
Activity points
1,897
pull-up yes

Hi I wanted to created a top-level block that contains two 8-bit tristate buffers ,one is connected to the input of a register and the other is connected to the output ...I got this warning :

WARNING:Xst:2042 - Unit zreg: 8 internal tristates are replaced by logic (pull-up yes): into1<0>, into1<1>, into1<2>, into1<3>, into1<4>, into1<5>, into1<6>, into1<7>.

into1(7:0) is the vector signal connecting the output of the first buffer to the input of the register..
 

internal tristates are replaced by logic

Looks like an optimization notification.

You don't need 3-state on the register inputs.
 

    cmos babe

    Points: 2
    Helpful Answer Positive Rating
tristates replaced by logic

You are right,I don't need one. I was looking at some design and trying to write code describing it blindly.

I wrote a behavioral describtion of a register with a tristate buffer connected to it at the output .

Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity registerunit is
Port(clk,En,Eno: in std_logic;
	D: in std_logic_vector(7 downto 0);
		Q:out std_logic_vector(7 downto 0));
end registerunit;

architecture Behavioral of registerunit is	
signal G:std_logic_vector(7 downto 0);
begin

process(clk)

begin
if (clk'event and clk='1') then
	if En='1' THEN
	G<=D;
 	end if;
end if;
end process;
Process(G,eno)
begin
If Eno='0' THEN
Q<="ZZZZZZZZ";
else 
Q<=G;
end if;
	end process;
end Behavioral;
 

I'm getting a similar warning. This is just some code I wrote to figure out how I would code a bidirectional bus. I'm not sure why I'm getting the warning.

Code:
library ieee;
use ieee.std_logic_1164.all;

entity test is
	port(clock: in std_logic);
end entity;

architecture structure of test is

component a
	port(clock: in std_logic;
		bbus: inout std_logic_vector(7 downto 0);
		cs: inout std_logic);
end component;


component b 
	port(clock: in std_logic;
		bbus: inout std_logic_vector(7 downto 0);
		cs: in std_logic);
end component;

signal bbus: std_logic_vector(7 downto 0);
signal cs: std_logic;

begin

	c1: a port map(clock, bbus, cs);
	c2: b port map(clock, bbus, cs);

end structure;
Code:
library ieee;
use ieee.std_logic_1164.all;

entity b is
	port(clock: in std_logic;
		bbus: inout std_logic_vector(7 downto 0);
		cs: in std_logic);
end entity;

architecture behavior of b is
signal mem: std_logic_vector(7 downto 0);
signal state: integer range 0 to 1 := 0;
begin
	process(clock)
		begin
		if clock'event and clock = '1' then 
			case state is
				----------------- Read bus into mem
				when 0 =>
					if cs = '1' then
						mem <= bbus;
						state <= 1;
					else
						state <= 0;
					end if;
				----------------- Write to the bus
				when 1=>
					if cs = '0' then
						bbus <= mem;
						state <= 0;
					else
						bbus <= "ZZZZZZZZ";
						state <= 1;
					end if;
			end case;
		end if;
	end process;
end behavior;
Code:
library ieee;
use ieee.std_logic_1164.all;

entity a is
	port(clock: in std_logic;
		bbus: inout std_logic_vector(7 downto 0);
		cs: inout std_logic);
end entity;

architecture behavior of a is
signal mem: std_logic_vector(7 downto 0) := "11110000";
signal state: integer range 0 to 1 := 0;
begin
	process(clock)
		begin
		if clock'event and clock = '1' then 
			case state is
				------------------ Write to the bus
				when 0 =>
				cs <= '1';
				if cs = '0' then
					bbus <= not mem;
				else
					bbus <= "ZZZZZZZZ";
				end if;
				state <= 1;
				------------------ Read from the bus
				when 1=>
				mem <= bbus;
				cs <= '0';			
			end case;
		end if;
	end process;
end behavior;
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top