LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Find Resources
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cvs-checkins > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: cvs at opencores.org<cvs@o...>
    Date: Tue Sep 19 14:12:17 CEST 2006
    Subject: [cvs-checkins] MODIFIED: dirac ...
    Top
    Date: 00/06/09 19:14:12

    Modified: dirac/src/expgolomb EXP_GOLOMB_COUNTER.vhd
    EXP_GOLOMB_DECODER.vhd
    Log:
    Adjusted bitwidths and exp-golomb data format to be compatible with the Dirac Specification and software version 0.6.0. Updated test datasets and synthesis reports accordingly. Arithmetic coding and decoding are now COMPLETE.


    Revision Changes Path
    1.2 dirac/src/expgolomb/EXP_GOLOMB_COUNTER.vhd

    http://www.opencores.org/cvsweb.shtml/dirac/src/expgolomb/EXP_GOLOMB_COUNTER.vhd.diff?r1=1.1&r2=1.2

    (In the diff below, changes in quantity of whitespace are not shown.)

    Index: EXP_GOLOMB_COUNTER.vhd
    ===================================================================
    RCS file: /cvsroot/petebleackley/dirac/src/expgolomb/EXP_GOLOMB_COUNTER.vhd,v
    retrieving revision 1.1
    retrieving revision 1.2
    diff -u -b -r1.1 -r1.2
    --- EXP_GOLOMB_COUNTER.vhd 13 Jun 2006 12:45:00 -0000 1.1
    +++ EXP_GOLOMB_COUNTER.vhd 19 Sep 2006 12:12:17 -0000 1.2
    @@ -55,9 +55,9 @@

    architecture RTL of EXP_GOLOMB_COUNTER is
    signal DATA2 : std_logic_vector (32 downto 0);
    -signal LOG : std_logic_vector (5 downto 0);
    -signal OUT_ADDRESS : std_logic_vector( 5 downto 0);
    -signal UPDOWN : std_logic;
    +signal LOG : std_logic_vector (4 downto 0);
    +signal OUT_ADDRESS : std_logic_vector( 4 downto 0);
    +signal MODE : std_logic;
    signal OUTPUT_ACTIVE : std_logic;
    begin

    @@ -67,110 +67,100 @@
    begin
    if CLOCK'event and CLOCK = '1' then
    if DATA2(32) = '1' then
    - LOG <= "100000";
    + LOG <= "11111";
    elsif DATA2(31) = '1' then
    - LOG <= "011111";
    + LOG <= "11110";
    elsif DATA2(30) = '1' then
    - LOG <= "011110";
    + LOG <= "11101";
    elsif DATA2(29) = '1' then
    - LOG <= "011101";
    + LOG <= "11100";
    elsif DATA2(28) = '1' then
    - LOG <= "011100";
    + LOG <= "11011";
    elsif DATA2(27) = '1' then
    - LOG <= "011011";
    + LOG <= "11010";
    elsif DATA2(26) = '1' then
    - LOG <= "011010";
    + LOG <= "11001";
    elsif DATA2(25) = '1' then
    - LOG <= "011001";
    + LOG <= "11000";
    elsif DATA2(24) = '1' then
    - LOG <= "011000";
    + LOG <= "10111";
    elsif DATA2(23) = '1' then
    - LOG <= "010111";
    + LOG <= "10110";
    elsif DATA2(22) = '1' then
    - LOG <= "010110";
    + LOG <= "10101";
    elsif DATA2(21) = '1' then
    - LOG <= "010101";
    + LOG <= "10100";
    elsif DATA2(20) = '1' then
    - LOG <= "010100";
    + LOG <= "10011";
    elsif DATA2(19) = '1' then
    - LOG <= "010011";
    + LOG <= "10010";
    elsif DATA2(18) = '1' then
    - LOG <= "010010";
    + LOG <= "10001";
    elsif DATA2(17) = '1' then
    - LOG <= "010001";
    + LOG <= "10000";
    elsif DATA2(16) = '1' then
    - LOG <= "010000";
    + LOG <= "01111";
    elsif DATA2(15) = '1' then
    - LOG <= "001111";
    + LOG <= "01110";
    elsif DATA2(14) = '1' then
    - LOG <= "001110";
    + LOG <= "01101";
    elsif DATA2(13) = '1' then
    - LOG <= "001101";
    + LOG <= "01100";
    elsif DATA2(12) = '1' then
    - LOG <= "001100";
    + LOG <= "01011";
    elsif DATA2(11) = '1' then - LOG <= "001011"; + LOG <= "01010"; elsif DATA2(10) = '1' then - LOG <= "001010"; + LOG <= "01001"; elsif DATA2(9) = '1' then - LOG <= "001001"; + LOG <= "01000"; elsif DATA2(8) = '1' then - LOG <= "001000"; + LOG <= "00111"; elsif DATA2(7) = '1' then - LOG <= "000111"; + LOG <= "00110"; elsif DATA2(6) = '1' then - LOG <= "000110"; + LOG <= "00101"; elsif DATA2(5) = '1' then - LOG <= "000101"; + LOG <= "00100"; elsif DATA2(4) = '1' then - LOG <= "000100"; + LOG <= "00011"; elsif DATA2(3) = '1' then - LOG <= "000011"; + LOG <= "00010"; elsif DATA2(2) = '1' then - LOG <= "000010"; - elsif DATA2(1) = '1' then - LOG <= "000001"; + LOG <= "00001"; else - LOG <= "000000"; + LOG <= "00000"; end if; end if; end process LOGARITHM; -MODE : process (CLOCK) -begin - if CLOCK'event and CLOCK = '1' then - if RESET = '1' then - OUTPUT_ACTIVE <= '0'; - elsif TEST = '1' then - OUTPUT_ACTIVE <= '1'; - elsif OUT_ADDRESS = "000000" then - OUTPUT_ACTIVE <= '0'; - end if; - end if; -end process MODE; - - OUTPUT: process (CLOCK) begin if CLOCK'event and CLOCK = '1' then if RESET = '1' then - UPDOWN <= '0'; - OUT_ADDRESS <= "000000"; + MODE <= '0'; + OUT_ADDRESS <= "00000"; DATA_OUT <= '0'; + OUTPUT_ACTIVE <= '0'; elsif OUTPUT_ACTIVE = '1' then - if UPDOWN = '0' then - if OUT_ADDRESS = LOG then + if MODE = '1' then + DATA_OUT <= DATA2(conv_integer(OUT_ADDRESS)); + MODE <= '0'; + else + if OUT_ADDRESS = "00000" then DATA_OUT <= '1'; - UPDOWN <= '1'; + OUTPUT_ACTIVE <= '0'; else DATA_OUT <= '0'; - OUT_ADDRESS <= OUT_ADDRESS + "000001"; + OUT_ADDRESS <= OUT_ADDRESS - "00001"; + MODE <= '1'; end if; - else - OUT_ADDRESS <= OUT_ADDRESS - "000001"; - DATA_OUT <= DATA2(conv_integer(OUT_ADDRESS)); end if; + elsif TEST = '1' then + OUTPUT_ACTIVE <= '1'; + OUT_ADDRESS <= LOG; + MODE <= '0'; end if; end if; end process OUTPUT; 1.2 dirac/src/expgolomb/EXP_GOLOMB_DECODER.vhd http://www.opencores.org/cvsweb.shtml/dirac/src/expgolomb/EXP_GOLOMB_DECODER.vhd.diff?r1=1.1&r2=1.2 (In the diff below, changes in quantity of whitespace are not shown.) Index: EXP_GOLOMB_DECODER.vhd =================================================================== RCS file: /cvsroot/petebleackley/dirac/src/expgolomb/EXP_GOLOMB_DECODER.vhd,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- EXP_GOLOMB_DECODER.vhd 13 Jun 2006 12:45:00 -0000 1.1 +++ EXP_GOLOMB_DECODER.vhd 19 Sep 2006 12:12:17 -0000 1.2 @@ -33,6 +33,8 @@ -- your version of this file under the terms of any one of the MPL, the GPL -- or the LGPL. -- * ***** END LICENSE BLOCK ***** */ + + library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; @@ -53,11 +55,7 @@ end EXP_GOLOMB_DECODER; architecture RTL of EXP_GOLOMB_DECODER is - signal DATA_1 : std_logic_vector(31 downto 0); - signal DATA_2 : std_logic_vector(31 downto 0); - signal SUM : std_logic_vector(31 downto 0); - signal NUMBITS_1 : std_logic_vector(4 downto 0); - signal NUMBITS_2 : std_logic_vector(4 downto 0); + signal DATA : std_logic_vector(31 downto 0); signal MODE : std_logic; signal CALC_COMPLETE : std_logic; begin @@ -66,38 +64,29 @@ begin if CLOCK'event and CLOCK = '1' then --WHEN CLOCK EDGE DETECTED if RESET = '1' then --SET ALL REGISTERS TO ZERO - DATA_1 <= (others => '0'); - DATA_2 <= (others => '0'); - NUMBITS_1 <= (others => '0'); - NUMBITS_2 <= (others => '0'); + DATA <= ((0)=>'1', others => '0'); DATA_OUT <= (others => '0'); - MODE <= '0'; CALC_COMPLETE <= '0'; - elsif CALC_COMPLETE = '1' then - DATA_1 <= (others => '0'); - DATA_2 <= (others => '0'); - NUMBITS_1 <= (others => '0'); - NUMBITS_2 <= (others => '0'); MODE <= '0'; + elsif CALC_COMPLETE = '1' then + DATA <= ((0)=> '1',others => '0'); CALC_COMPLETE <= '0'; - elsif (NUMBITS_2 = NUMBITS_1) and (MODE = '1') then --IF CALCULATION IS COMPLETE - DATA_OUT <= SUM; - CALC_COMPLETE <= '1'; + MODE <= '0'; elsif ENABLE = '1' then --IF DATA IS BEING INPUT - if MODE = '1' then --READ INPUT DATA INTO REGISTER DATA_2, AND COUNT THE NUMBER OF BITS READ IN - DATA_2 <= DATA_2 (30 downto 0) & DATA_IN; - NUMBITS_2 <= NUMBITS_2 + "00001"; - elsif DATA_IN = '1' then --DETECT END OF EXPONENT, SWITCH TO MODE 1, FOR READING DATA + if MODE = '0' then --FOR "FOLLOW_ON" BITS + CALC_COMPLETE <= DATA_IN; MODE <= '1'; - else --IN MODE 0 (FOR READING EXPONENT) - DATA_1 <= DATA_1 (30 downto 0) & '1'; - NUMBITS_1 <= NUMBITS_1 + "00001"; + if DATA_IN = '1' then + DATA_OUT <= DATA - "00000000000000000000000000000001"; + end if; + else --IN MODE 1 (FOR DATA_BITS) + DATA <= DATA (30 downto 0) & DATA_IN; + MODE <= '0'; end if; end if; end if; end process READ_DATA; -SUM <= DATA_1 + DATA_2; READY <= CALC_COMPLETE; end RTL;

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.