Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > VHDL question

Reply
Thread Tools

VHDL question

 
 
jahaya@gmail.com
Guest
Posts: n/a
 
      07-21-2005
Hello folks,

I would like to assign a bit in std_logic_vector array to a std_logic
value, is it permissible? i assume that std_logic_vector IS ARRAY OF
std_logic type !

I have mentioned below few piece of my code for illustration:
(its a part of my testbench)

I need to sent each bit of the std_logic_vector array at every clock
cycle.

--Declarations

D : std_logic;
data_in : std_logic_vector(31 downto
0):="01010000000000000000001100000000"



Data_inp: process(clk)
begin
if (clk'event and clk = '1') then
for i in 0 to data_in'length loop
D <= data_in(i);
end loop;
end if;
end process Data_inp;

ERROR: FATAL ERROR : Index 32 out of range(31 downto 0).
(I assume it says that we can assign 32 bits to a one bit std_logic)


Thanks in Advance,
ALI

 
Reply With Quote
 
 
 
 
jahaya@gmail.com
Guest
Posts: n/a
 
      07-21-2005
--There was a typo in my previous message

Hello folks,


I would like to assign a bit in std_logic_vector array to a std_logic
value, is it permissible? i assume that std_logic_vector IS ARRAY OF
std_logic type !


I have mentioned below few piece of my code for illustration:
(its a part of my testbench)


I need to sent each bit of the std_logic_vector array at every clock
cycle.


--Declarations


D : std_logic;
data_in : std_logic_vector(31 downto
0):="0101000000000000000000110*0000000"


Data_inp: process(clk)
begin
if (clk'event and clk = '1') then
for i in 0 to data_in'length loop
D <= data_in(i);
end loop;
end if;
end process Data_inp;


ERROR: FATAL ERROR : Index 32 out of range(31 downto 0).
(I assume it says that we can't assign 32 bits to a one bit std_logic)


Thanks in Advance,
ALI

 
Reply With Quote
 
 
 
 
john Doef
Guest
Posts: n/a
 
      07-21-2005


http://www.velocityreviews.com/forums/(E-Mail Removed) a écrit :
> Hello folks,
>
> I would like to assign a bit in std_logic_vector array to a std_logic
> value, is it permissible? i assume that std_logic_vector IS ARRAY OF
> std_logic type !

Sure!

> I have mentioned below few piece of my code for illustration:
> (its a part of my testbench)
>
> I need to sent each bit of the std_logic_vector array at every clock
> cycle.
>
> --Declarations
>
> D : std_logic;
> data_in : std_logic_vector(31 downto
> 0):="01010000000000000000001100000000"
>
>
>
> Data_inp: process(clk)
> begin
> if (clk'event and clk = '1') then
> for i in 0 to data_in'length loop
> D <= data_in(i);
> end loop;
> end if;
> end process Data_inp;
>
> ERROR: FATAL ERROR : Index 32 out of range(31 downto 0).
> (I assume it says that we can assign 32 bits to a one bit std_logic)

Just read *your* code: 0 to data_in'length is 0 to 32. And data_in(32)
is
not allowed.

You should write: for i in data_in'range loop

BTW, the loop is useless and equivalent to:
D <= data_in (0);

Just read your code and the error messages.

JD.

 
Reply With Quote
 
skatoulas@hotmail.com
Guest
Posts: n/a
 
      07-21-2005
Here you go...
If you ever synthesize this, you should reset the counter variable
(index_cnt) before using it, probably by adding a reset input of some
sort.

--Declarations
D : std_logic;
data_in : std_logic_vector(31 downto
0):="01010000000000000000001100000000"

Data_inp: process(clk)
variable index_cnt : std_logic_vector(4 downto 0) := "00000";
begin
if (clk'event and clk = '1') then
D <= data_in(conv_integer(index_cnt));
index_cnt := unsigned(index_cnt) + 1;
end if;
end process Data_inp;

The thing you were doing with the loop is pointless as you were
multiply assigning values to D, in which case only the last assignment
counts. For loops are different in VHDL than in programming. Also, if u
use numeric_std as opposed to std_logic_arith you need to replace
conv_integer with to_integer. Hope this helps

 
Reply With Quote
 
Andy Peters
Guest
Posts: n/a
 
      07-21-2005
(E-Mail Removed) wrote:
> Hello folks,
>
> I would like to assign a bit in std_logic_vector array to a std_logic
> value, is it permissible? i assume that std_logic_vector IS ARRAY OF
> std_logic type !


Yes, you can.

> I have mentioned below few piece of my code for illustration:
> (its a part of my testbench)
>
> I need to sent each bit of the std_logic_vector array at every clock
> cycle.
>
> --Declarations
>
> D : std_logic;
> data_in : std_logic_vector(31 downto
> 0):="01010000000000000000001100000000"
>
> Data_inp: process(clk)
> begin
> if (clk'event and clk = '1') then
> for i in 0 to data_in'length loop
> D <= data_in(i);
> end loop;
> end if;
> end process Data_inp;
>
> ERROR: FATAL ERROR : Index 32 out of range(31 downto 0).
> (I assume it says that we can assign 32 bits to a one bit std_logic)


I'm not going to give you the answer straight up. You'll have to work
out the details for yourself. Given:

signal data_in : std_logic_vector(31 downto 0);

What is the value of:

data_in'length

?

Once you answer that, the cause of the fatal error should be obvious.

Having said that, your loop still won't do what you want. (Homework:
Why not?)

Perhaps a simpler way of doing what you want would be:

DriveBit : process is
begin
for i in data_in'range loop
D <= data_in(i);
wait until rising_edge(clk);
end loop;
end process DriveBit;

-a
--a

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
VHDL standard question (VHDL 93 chapter 4.3.2.2) Kim Enkovaara VHDL 9 10-15-2008 11:04 PM
VHDL-2002 vs VHDL-93 vs VHDL-87? afd VHDL 1 03-23-2007 09:33 AM
VHDL 2002 vs VHDL 1993 dude VHDL 1 03-23-2006 01:18 PM
multiD-vhdl: Multi Dimensional Arrays (allowing generics on each dimension) for VHDL (including ports) albert.neu@gmail.com VHDL 2 03-21-2006 04:05 PM
what's the difference between VHDL 93 CONCATENATION and VHDL 87 CONCATENATION? walala VHDL 3 09-18-2003 04:17 AM



Advertisments