- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i got a title for miniproject like this,,
question-Develop a VHDL model for an accumulator that calculates the sum of a sequence of fixed-point numbers. Each input number is signed with 4 pre-binary-point and 12 post-binary-point bits. The accumulated sum has 8 pre-binary-point and 12 post-binary-point bits. A new number arrives at the input during a clock cycle when the data_en control input is 1. The accumulated sum is cleared to 0 when the reset control input is 1. Both control inputs are synchronous. and below is the code that i found.i've tried the code but it is not valid for more than 4-bits.is there anything wrong with the code?i also wanna know the meaning of "resize(data_in, sum'length)" in the code.is there any specific use or meaning of this code? library ieee; use ieee.std_logic_1164.all, ieee.numeric_std.all; entity accumulator is port (clk,reset, data_en : in std_logic; data_in : in signed(3 downto 0); data_out : out signed(3 downto 0) ); end entity accumulator; architecture rtl of accumulator is signal sum, new_sum :signed(3 downto 0); begin new_sum <= sum + resize(data_in, sum'length); reg: process (clk) is begin if rising_edge(clk) then if reset = '1' then sum <= (others => '0'); elsif data_en = '1' then sum <= new_sum; end if; end if; end process reg; data_out <= sum; end architecture rtl; i'm glad if there's anybody wanna help asap before next week...Link Copied
6 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, use "generic" in entity definition.
to post codes in this forum, use the [ code ] [ /code ].
entity accumulator is
generic (N : integer range 1 to 32 := 4)
port (
clk,reset, data_en : in std_logic;
data_in : in signed(N-1 downto 0);
data_out : out signed(N-1 downto 0) );
end entity accumulator;
architecture rtl of accumulator is
signal sum:signed(N-1 downto 0);
signal sum:signed(N-1 downto 0);
begin
new_sum <= sum + resize(data_in, sum'length); -- maybe do not use this statement.
-- new_sum <= resize(sum + data_in, new_sum'length);
end architecture rtl;
May it help you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- Hi, use "generic" in entity definition. to post codes in this forum, use the [ code ] [ /code ].
entity accumulator is
generic (N : integer range 1 to 32 := 4)
port (
clk,reset, data_en : in std_logic;
data_in : in signed(N-1 downto 0);
data_out : out signed(N-1 downto 0) );
end entity accumulator;
architecture rtl of accumulator is
signal sum:signed(N-1 downto 0);
signal sum:signed(N-1 downto 0);
begin
new_sum <= sum + resize(data_in, sum'length); -- maybe do not use this statement.
-- new_sum <= resize(sum + data_in, new_sum'length);
end architecture rtl;
May it help you --- Quote End --- new_sum <= sum + resize(data_in, sum'length); you said maybe do not use this statement.then,can i know what statement do i have to use to replace this one?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
new_sum <= resize(sum + data_in, new_sum'length); -- something like that
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i've tried it..it's juz the same as new_sum <= sum + resize(data_in, sum'length);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It is better to do '+' operation and then truncate the result than truncate terms and then do '+' operation
in this case, it is less obvious since new_sum and sum get the same size. Rigorously, it is different. Think schematic. may the force be with you :-)- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i'll try my best..thnx
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page