|
Message
From: cvs at opencores.org<cvs@o...>
Date: Sun Sep 17 18:30:06 CEST 2006
Subject: [cvs-checkins] MODIFIED: matrix3x3 ...
Date: 00/06/09 17:18:30 Modified: matrix3x3/rtl/vhdl colorconv.vhd Log: corrected round error Revision Changes Path 1.3 matrix3x3/rtl/vhdl/colorconv.vhd http://www.opencores.org/cvsweb.shtml/matrix3x3/rtl/vhdl/colorconv.vhd.diff?r1=1.2&r2=1.3 (In the diff below, changes in quantity of whitespace are not shown.) Index: colorconv.vhd =================================================================== RCS file: /cvsroot/vv_gulyaev/matrix3x3/rtl/vhdl/colorconv.vhd,v retrieving revision 1.2 retrieving revision 1.3 diff -u -b -r1.2 -r1.3 --- colorconv.vhd 15 Aug 2006 18:03:12 -0000 1.2 +++ colorconv.vhd 17 Sep 2006 16:30:06 -0000 1.3 @@ -44,6 +44,8 @@ signal m21, m22, m23 : SIGNED( (data_width+factors_width) downto 0 ); signal m31, m32, m33 : SIGNED( (data_width+factors_width) downto 0 ); +signal round1_1, round2_1, round3_1, round1_2, round2_2, round3_2: STD_LOGIC; + signal x1sh, x2sh, x3sh : SIGNED( data_width downto 0 ); signal x1s, x2s, x3s : SIGNED( data_width downto 0 ); @@ -132,6 +134,14 @@ y2w <= s2w + d2; y3w <= s3w + d3; + round1_1<=STD_LOGIC(y1w(f_factors_part-1)); + round2_1<=STD_LOGIC(y2w(f_factors_part-1)); + round3_1<=STD_LOGIC(y3w(f_factors_part-1)); + + round1_2 <= round1_1; + round2_2 <= round2_1; + round3_2 <= round3_1; + y1s(data_width+int_factors_part-1 downto data_width) <= y1w(data_width+int_factors_part+f_factors_part-1 downto data_width+f_factors_part); y2s(data_width+int_factors_part-1 downto data_width) <= y2w(data_width+int_factors_part+f_factors_part-1 downto data_width+f_factors_part); y3s(data_width+int_factors_part-1 downto data_width) <= y3w(data_width+int_factors_part+f_factors_part-1 downto data_width+f_factors_part); @@ -144,9 +154,10 @@ y2sh <= y2s + b2y(FACTORS_WIDTH-1 DOWNTO FACTORS_WIDTH-DATA_WIDTH-1); y3sh <= y3s + b3y(FACTORS_WIDTH-1 DOWNTO FACTORS_WIDTH-DATA_WIDTH-1); - y1r <= y1sh+y1w(f_factors_part-1); - y2r <= y2sh+y2w(f_factors_part-1); - y3r <= y3sh+y3w(f_factors_part-1); + y1r <= y1sh + round1_2; + y2r <= y2sh + round2_2; + y3r <= y3sh + round3_2; + if (y1r(data_width+int_factors_part-1)='1' and y1r(data_width)='1')then y1ro(data_width-1 downto 0)<=(others=>'0'); elsif (y1r(data_width+int_factors_part-1)='0' and y1r(data_width)='1')then y1ro(data_width-1 downto 0)<=(others=>'1'); @@ -165,7 +176,6 @@ end if; end process; - y1c <= y1r(data_width+int_factors_part-1 downto data_width); y2c <= y2r(data_width+int_factors_part-1 downto data_width); y3c <= y3r(data_width+int_factors_part-1 downto data_width);
|
 |