FPGA Central - World's 1st FPGA / CPLD Portal

FPGA Central

World's 1st FPGA Portal

 

Go Back   FPGA Groups > NewsGroup > VHDL

VHDL comp.lang.vhdl newsgroup / Usenet

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 10-28-2006, 01:51 AM
xipn
Guest
 
Posts: n/a
Default Aggregate for SLV

Hi all,
Is it any tricky way how to extend std_logic_vector by means of aggregate?

Example:
A : STD_LOGIC_VECTOR(3 DOWNTO 0);
B : STD_LOGIC_VECTOR(6 DOWNTO 0);

Something like (see code below)
B <= (5 downto 2 => A, others => '0');

Of course there are a lot of ways how to code it (consequent
assignments, loop,... ) but aggregate would be nice.
Thanks for comments.

-------------------------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

ENTITY test IS

END ENTITY test;

ARCHITECTURE tb OF test IS

BEGIN -- ARCHITECTURE tb

PROCESS IS

VARIABLE v_x : STD_LOGIC_VECTOR(3 DOWNTO 0) := "1100";
VARIABLE v_y : STD_LOGIC_VECTOR(6 DOWNTO 0);

FUNCTION vec2str(vec : STD_LOGIC_VECTOR) RETURN STRING IS
VARIABLE result : STRING(vec'LEFT + 1 DOWNTO 1);
BEGIN

FOR i IN vec'reverse_range LOOP
IF (vec(i) = '1') THEN
result(i + 1) := '1';
ELSIF (vec(i) = '0') THEN
result(i + 1) := '0';
ELSE
result(i + 1) := 'X';
END IF;
END LOOP;
RETURN result;
END;

BEGIN -- PROCESS

v_y := (5 DOWNTO 2 => '1',OTHERS => '0');
-- v_y := (5 DOWNTO 2 => v_x ,OTHERS => '0');

REPORT "Y = " & vec2str(v_y) & " X = " & vec2str(v_x);
WAIT;

END PROCESS;


END ARCHITECTURE tb;
-------------------------------------------------------------------------------
-- vsim -c test
-- run 1
Reply With Quote
  #2 (permalink)  
Old 10-29-2006, 11:23 PM
Paul Uiterlinden
Guest
 
Posts: n/a
Default Re: Aggregate for SLV

xipn wrote:

> Hi all,
> Is it any tricky way how to extend std_logic_vector by means of
> aggregate?
>
> Example:
> A : STD_LOGIC_VECTOR(3 DOWNTO 0);
> B : STD_LOGIC_VECTOR(6 DOWNTO 0);
>
> Something like (see code below)
> B <= (5 downto 2 => A, others => '0');
>
> Of course there are a lot of ways how to code it (consequent
> assignments, loop,... ) but aggregate would be nice.


With one assignment, using concatenation:
B <= '0' & A & "00";

With two assignments:
B <= (others => '0');
B(5 downto 2) <= A;

--
Paul.
www.aimcom.nl
email address: switch x and s
Reply With Quote
  #3 (permalink)  
Old 10-30-2006, 01:09 AM
KJ
Guest
 
Posts: n/a
Default Re: Aggregate for SLV


"Paul Uiterlinden" <[email protected]> wrote in message
news:[email protected]
> xipn wrote:
>
>> Hi all,
>> Is it any tricky way how to extend std_logic_vector by means of
>> aggregate?
>>
>> Example:
>> A : STD_LOGIC_VECTOR(3 DOWNTO 0);
>> B : STD_LOGIC_VECTOR(6 DOWNTO 0);
>>
>> Something like (see code below)
>> B <= (5 downto 2 => A, others => '0');
>>

> With one assignment, using concatenation:
> B <= '0' & A & "00";
>
> With two assignments:
> B <= (others => '0');
> B(5 downto 2) <= A;


The 'With two assignments' approach will only work when within a process

process(A)
begin
B <= (others => '0');
B(5 downto 2) <= A;
end process;

If used as concurrent statements, then both lines will be driving all 7 bits
of signal 'B'.

KJ


Reply With Quote
  #4 (permalink)  
Old 10-30-2006, 04:19 AM
KJ
Guest
 
Posts: n/a
Default Re: Aggregate for SLV

> If used as concurrent statements, then both lines will be driving all 7
> bits of signal 'B'.
>


Oops, meant to say only bits 5 downto 2 of signal B will have multiple
drivers not all 7

KJ



Reply With Quote
  #5 (permalink)  
Old 10-30-2006, 10:41 PM
Paul Uiterlinden
Guest
 
Posts: n/a
Default Re: Aggregate for SLV

KJ wrote:


>> With two assignments:
>> B <= (others => '0');
>> B(5 downto 2) <= A;

>
> The 'With two assignments' approach will only work when within a
> process
>
> process(A)
> begin
> B <= (others => '0');
> B(5 downto 2) <= A;
> end process;


You're right, I forgot to mention that. Thanks for the addition.

--
Paul.
www.aimcom.nl
email address: switch x and s
Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

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 On


Similar Threads
Thread Thread Starter Forum Replies Last Post
partial aggregate assignment? jens VHDL 1 10-06-2005 05:49 PM
aggregate operator [email protected] VHDL 3 07-12-2005 08:34 PM
Quartus VHDL problem with aggregate and type cast rickman VHDL 3 07-15-2003 06:24 AM
Quartus VHDL problem with aggregate and type cast rickman FPGA 3 07-15-2003 06:24 AM


All times are GMT +1. The time now is 02:19 AM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright 2008 @ FPGA Central. All rights reserved