⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mulfactor.v

📁 基于VHDL语言的一个FFT快速傅里叶变换程序采用4蝶形算法
💻 V
字号:
/*
 * filename: mulfactor.v
 *
 * version: 2007-04-21
 *
 * funciton: 将I和Q路数据乘以旋转因子.因为wprom中只保存了的四象限的旋转因子,
 *     所以要根据angle的最高两位,相应的调整I和Q的值,再输入到乘法器中.
 *         mul_s是乘减器,mul_a是乘加器.
 *
 */

module	mulfactor
(
	rst,
	clk8x,
	angle,
	I,
	Q,

	mul_Iout,
	mul_Qout

	//,wpI,wpQ
);

parameter				WIDTH=16;

input					clk8x, rst;
input	[7:0]			angle;
input	[WIDTH-1:0]		I,Q;

output	[2*WIDTH:0]		mul_Iout,mul_Qout;
//output	[WIDTH-1:0]		wpI,wpQ;

reg		[WIDTH-1:0]		X,Y;

wire	[WIDTH-1:0]		wpI,wpQ;
			
factor_rom_I	wprom_I(.clk(clk8x), .addr(angle[5:0]), .data(wpI));
factor_rom_Q	wprom_Q(.clk(clk8x), .addr(angle[5:0]), .data(wpQ));

fmts	mul_s(.clock0(clk8x), .dataa_0(X), .datab_0(wpI), .dataa_1(Y), .datab_1(wpQ), .result(mul_Iout));
fmta	mul_a(.clock0(clk8x), .dataa_0(X), .datab_0(wpQ), .dataa_1(Y), .datab_1(wpI), .result(mul_Qout));

always @ (posedge clk8x)
begin
	if(rst==1)
	begin
		X<=0;
		Y<=0;
	end
	else
	begin
		case (angle[7:6])
		2'b00:	begin
				X <= I;
				Y <= Q;
				end
		2'b01:	begin
				X <= Q;
				Y <= -I;
				end
		2'b10:	begin
				X <= -I;
				Y <= -Q;
				end
		2'b11:	begin
				X <= -Q;
				Y <= I;
				end
		endcase
	end
end

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -