📄 mulfactor.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 + -