newbie question about type declaration

M

Max

Guest
I have a problem with types:

-----8<-----------
entity driver is
Port ( data : inout integer range 0 to 255;
clk : in std_logic);
end driver;

architecture Behavioral of driver is

type data_type is range 0 to 255;
signal data_reg: data_type;

begin

process (clk)
begin
if rising_edge(clk) then
--- some code here
data <= data_reg;
end if;
end process;
--------8<------------

the error is:
ERROR:HDLParsers:800 - driver.vhd Line xx. Type of data_reg is
incompatible with type of data.

How can I solve this problem?

thanks
 
Max wrote:
I have a problem with types:

-----8<-----------
entity driver is
Port ( data : inout integer range 0 to 255;
clk : in std_logic);
end driver;

architecture Behavioral of driver is

type data_type is range 0 to 255;
This declares a new type that as nothing to do with Integers.

subtype data_type is Integer range 0 to 255;

declares a subtype of type Integer and solves your problem.

Regards,

PS: inout mode for an integer port???
--
Renaud Pacalet, ENST, 46 rue Barrault 75634 Paris Cedex 13
###### Tel. : 01 45 81 78 08 | Fax : 01 45 80 40 36 ######
# Fight Spam! Join EuroCAUCE: http://www.euro.cauce.org/ #
 
Renaud Pacalet <MonPrenom.MonNom@PasDeSpam.MonOrganisation.France> writes:

Max wrote:
I have a problem with types:
-----8<-----------
entity driver is
Port ( data : inout integer range 0 to 255;
clk : in std_logic);
end driver;
architecture Behavioral of driver is
type data_type is range 0 to 255;

This declares a new type that as nothing to do with Integers.

subtype data_type is Integer range 0 to 255;

declares a subtype of type Integer and solves your problem.
And best make that subtype declaration in a package and also use it
for the data port in the entity. The magic number 255 should probably
also be derived from a constant like DATA_WIDTH. Next, consider using
natural or positive instead of integer. All this makes the code easier
to read and less error prone.

HTH,
Colin
 

Welcome to EDABoard.com

Sponsor

Back
Top