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-23-2006, 04:22 AM
Rishi Dhupar
Guest
 
Posts: n/a
Default Help with simple function call

Hi, just started learning functions in VHDL.

Making a simple mux4 function. I cannot seem to figure out what type
of conditional statements are allowed in functions. Trying quite a few
as you can see, but all of them are giving errors.

Any suggestions?

Thanks.

RishiD

Here is the complete code.

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

entity hw4_mux4 is
Port ( OpSel : in std_logic_vector(1 downto 0);
A : in std_logic_vector(7 downto 0);
B : in std_logic_vector(7 downto 0);
C : in std_logic_vector(7 downto 0);
D : in std_logic_vector(7 downto 0);
E : in std_logic_vector(7 downto 0);
F : in std_logic_vector(7 downto 0);
G : in std_logic_vector(7 downto 0);
H : in std_logic_vector(7 downto 0);
Z : out std_logic_vector(7 downto 0));
end hw4_mux4;

architecture behav of hw4_mux4 is
signal X : std_logic_vector(7 downto 0);
signal Y : std_logic_vector(7 downto 0);
function mux4 (fA, fB, fC, fD : std_logic_vector(7 downto 0); fOpSel :
std_logic_vector(1 downto 0))
return std_logic_vector is
variable result : std_logic_vector(7 downto 0);
begin


-- WITH fOpSel SELECT
-- result := fA WHEN "00",
-- fB WHEN "01",
-- fC WHEN "10",
-- fD WHEN "11",
-- NULL WHEN OTHERS;


result := fA when fOpSel = '00' ELSE
fB when fOpSel = '01' ELSE
fC when fOpSel = '10' ELSE
fD;



-- process (OpSel, A, B, C, D)
-- begin
-- case OpSel is
-- when "00" => result := A;
-- when "01" => result := B;
-- when "10" => result := C;
-- when "11" => result := D;
-- end case;
-- end process;

return result;

end mux4;

begin
X <= mux4(A, B, C, D, OpSel);
Y <= mux4(E, F, G, H, OpSel);
Z <= X - Y;
end behav;

Reply With Quote
  #2 (permalink)  
Old 10-23-2006, 02:11 PM
KJ
Guest
 
Posts: n/a
Default Re: Help with simple function call


Rishi Dhupar wrote:
> Hi, just started learning functions in VHDL.
>
> Making a simple mux4 function. I cannot seem to figure out what type
> of conditional statements are allowed in functions. Trying quite a few
> as you can see, but all of them are giving errors.
>
> Any suggestions?


This should get you started.

function mux4 (fA, fB, fC, fD : std_logic_vector; fOpSel :
std_logic_vector(1 downto 0)) return std_logic_vector is
variable result : std_logic_vector(7 downto 0);
begin
case fOpSel is
when "00" => result := fA;
when "01" => result := fB;
when "10" => result := fC;
when others => result := fD;
end case;
return(result);
end function mux4;
KJ

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
help me improve this simple function [email protected] FPGA 5 08-10-2008 05:59 PM
function call verilog designer Verilog 2 07-21-2007 05:20 PM
elaborating a function call Mike Verilog 6 08-17-2006 02:45 AM
function call(help) leon86 VHDL 0 05-08-2006 06:02 PM
Function Call Matt North VHDL 4 10-25-2003 06:48 PM


All times are GMT +1. The time now is 06:11 PM.


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