]> AND Private Git Repository - blast.git/blob - rgb3sx8_to_gs_impl.xml
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
05708e33bfae33c687f09a8f72744632a95616f3
[blast.git] / rgb3sx8_to_gs_impl.xml
1 <!DOCTYPE rgb3sx8_to_gs>
2 <block_impl ref_md5="" ref_name="rgb3sx8_to_gs.xml">
3   <comments>
4     <author mail="" lastname="" firstname=""/>
5     <date creation=""/>
6     <description>vcdsv</description>
7     <notes>vrevgfregaqv</notes>
8   </comments>
9   <libraries>
10     <library name="ieee">
11       <package name="std_logic_1164" use="all"/>
12       <package name="numeric_std" use="all"/>
13     </library>
14   </libraries>
15   <architecture>
16 -- Signals
17 signal do_mult : std_logic;
18 signal do_out : std_logic;
19 signal count : unsigned (2 downto 0);
20 signal accum : unsigned(dsp_in_width-1 downto 0);
21 signal result : unsigned(dsp_out_width-1 downto 0);
22 signal cst_mult : unsigned(dsp_in_width-1 downto 0); -- eq. 87382 to do /3
23
24 begin
25
26 cst_mult &lt;= to_unsigned(87382, 18);
27
28 accum_process : process (clk, reset)
29 begin
30 if reset = '1' then
31 count &lt;= to_unsigned(0, 3);
32 accum &lt;= to_unsigned(0, dsp_in_width);
33 do_mult &lt;= '0';
34
35 elsif rising_edge(clk) then
36
37 do_mult &lt;= '0';
38
39 if rgb_in_enb = '1' then
40
41 if count = 0 then
42 accum &lt;= resize(unsigned(rgb_in), dsp_in_width);
43 count &lt;= to_unsigned(1, 3);
44 elsif count = 1 then
45 accum &lt;= accum + resize(unsigned(rgb_in), dsp_in_width);
46 count &lt;= to_unsigned(2, 3);
47 elsif count = 2 then
48 accum &lt;= accum + resize(unsigned(rgb_in), dsp_in_width);
49 count &lt;= to_unsigned(0, 3);
50 do_mult &lt;= '1';
51 end if;
52 end if;
53 end if;
54
55 end process accum_process;
56
57 mult_process : process (clk, reset)
58 begin
59 if reset = '1' then
60 result &lt;= to_unsigned(0, dsp_out_width);
61 do_out &lt;= '0';
62 elsif rising_edge(clk) then
63
64 do_out &lt;= '0';
65 if do_mult = '1' then
66 result &lt;= accum * cst_mult;
67 do_out &lt;= '1';
68 end if;
69 end if;
70 end process mult_process;
71
72 gs_out &lt;= std_logic_vector(result(dsp_in_width+7 downto dsp_in_width));
73 gs_out_enb &lt;= do_out;
74
75 end rtl;
76 </architecture>
77   <patterns>
78     <delta value="to_define"/>
79     <consumption>
80       <input name="rgb_in_enb" pattern="to_define"/>
81     </consumption>
82     <production counter="to_define">
83       <output name="gs_out_enb" pattern="to_define"/>
84     </production>
85   </patterns>
86 </block_impl>