Jump to content

    

фильтр

Требуется написать простой интегрирующий фильтр. У меня получилось два варианта

module filter1
#(parameter IWIDTH = 16)
(
	input CLOCK,
	input  signed [IWIDTH-1:0] In,
	output reg signed [IWIDTH-1:0] Out
); 
integer i;
reg [16:0] memoryFilter[10:0];
always@(posedge CLOCK)
begin
	for (i =10; i>= 1; i=i-1)
		memoryFilter[i] = memoryFilter[i-1];
	memoryFilter[0] = In;
end
always@(negedge CLOCK)
begin
	for (i =10; i>= 0; i=i-1)
		Out =  Out + memoryFilter[i];
end

endmodule

и 

module filter2
#(parameter IWIDTH = 16, parameter NUMBER =10)
(
	input CLOCK,
	input  signed [IWIDTH-1:0] In,
	output reg signed [IWIDTH-1:0] Out
); 
genvar i;
generate
	for( i=0; i<NUMBER; i=i+1 )
	begin:mem
		reg [IWIDTH-1:0]r=0;
		if (i ==0)
		begin
			always@(posedge CLOCK)
				r <= In;
		end
		else
		begin
			always @(posedge CLOCK)
			  mem[i].r <= mem[i-1].r;
		end
		if (i == 0)
		begin
			always @*
				Out = mem[i].r;
		end
		else
		begin
			always @*
				Out = Out + mem[i].r;
		end
	end
endgenerate

endmodule

как делать более правильно что ли.

Share this post


Link to post
Share on other sites

Если можно обойтись без generate, лучше без него обойтись.

Share this post


Link to post
Share on other sites

Почему generate не желательно? Почему убрали все форы?

Edited by nopak

Share this post


Link to post
Share on other sites

Проще в 1е засунуть generate, вывод сделать через арифметику и одновременно запись в регистр по положительному фронту.

2е имеет фундаментальные ошибки.

Share this post


Link to post
Share on other sites

А почему нельзя первый отсчет суммировать к общей сумме, а последний вычитать?

И кольцом по памяти.

Share this post


Link to post
Share on other sites

потому что учусь программированию ПЛИС 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this