;ehfdcrbq 0 16 января, 2012 Опубликовано 16 января, 2012 · Жалоба Здравствуйте! Необходимо реализовать оптимальный фильтр на ПЛИС, состоящий из элементов линии задержки, биты с выходов линии умножаются на коэффициенты +/- 1 попарно (т.е. первая пара на +1, вторая пара на -1, третья на +1 и т.д.). Далее эти коэффициенты суммируются. Линию задержки реализовал (ниже привожу фрагмент кода), а вот с побитным умножением проблема. Буду благодарен за помощь. entity rs_422 is port ( INPUT_RS422: in std_logic :='0'; CLK : in std_logic; ); end rs_422; architecture Behavioral of rs_422 is signal shift_register: std_logic_vector (15 downto 0); signal tmp: std_logic_vector (15 downto 0); begin shift_reg: process (CLK) begin if (rising_edge(CLK)) then tmp <= tmp (14 downto 0) & INPUT_RS422; end if; end process; shift_register <= tmp; end Behavioral; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 16 января, 2012 Опубликовано 16 января, 2012 · Жалоба На Verilog'е пойдет? module rs_422(input clk, input input_rs422, output [3:0] output_dat); reg [15:0] tmp = 0; always @(posedge clk) tmp <= (tmp << 1) | input_rs422; reg [3:0] out; int i; always @* begin out = 0; for(i=0; i<16; i=i+1) if (tmp[i]) if (i&2) out = out - 1; else out = out + 1; end assign output_dat = out; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
;ehfdcrbq 0 16 января, 2012 Опубликовано 16 января, 2012 · Жалоба Спасибо, правда в Veriloge я не очень, но ща буду разбираться :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться