?? ad_a.v
字號:
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 14:33:23 10/02/2007
// Design Name:
// Module Name: ad_a
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module ad_a(clk_61p44MHz, reset, x_r, x_i, y_r, y_i,
address, we_coe, coe_r, coe_i);
input clk_61p44MHz;
input reset, we_coe; // we_coe為高時,才能將加權(quán)因子寫入RAM中
input [15:0] x_r, x_i; // 數(shù)據(jù)速率為3.84Mbps
input [3:0] address;
input [15:0] coe_r, coe_i;
output [15:0] y_r, y_i;
reg [3:0] cnt;
always @(posedge clk_61p44MHz) begin
if(!reset)
cnt <= 0;
else
cnt <= cnt + 1;
end
//SRL16單元的寫控制信號,在cnt=0的時刻寫一個數(shù)
assign we = (cnt == 0) ? 1 : 0;
// 由于復數(shù)乘法器需要4個時鐘才能完成計算,所以對于累加器而言,
// 當cnt=4的時刻,本次累加的第一個數(shù)才達到,
// 此刻將bypass信號拉高,完成上次累加結(jié)果的輸出
assign bypass = (cnt == 4) ? 1 : 0;
// 聲明眾多IPcore之間的連線變量
wire [15:0] ar, ai, br, bi, pr, pi;
wire bypass, we, wea, web;
wire [31:0] ram_out; //高16位為實部,低16位為虛部
// RAM的A口只能用來讀取數(shù)據(jù)
assign wea = 0;
// 調(diào)用SRL16的移位寄存結(jié)構(gòu),用于濾波數(shù)據(jù)的緩存
shift16 shift16_01( .d(x_r), .spra(cnt), .clk(clk_61p44MHz),
.we(we), .spo(ar));
shift16 shift16_02( .d(x_i), .spra(cnt), .clk(clk_61p44MHz), .we(we), .spo(ai));
// 調(diào)用復數(shù)乘法器
aa_cmult aa_cmult( .ar(ar), .ai(ai), .br(ram_out[31:16]), .bi(ram_out[15:0]),
.pr(pr), .pi(pi), .clk(clk_61p44MHz), .ce(reset));
// 調(diào)用2個實數(shù)累加器實現(xiàn)一個復數(shù)累加器
aa_adder aa_adder01( .B(pr), .Q(y_r), .CLK(clk_61p44MHz), .BYPASS(bypass));
aa_adder aa_adder02( .B(pi), .Q(y_i), .CLK(clk_61p44MHz), .BYPASS(bypass));
// 調(diào)用一個雙口BLOCK RAM,位寬為32比特,深度為16
aa_bram aa_bram(//A口只讀//B口只寫 .clka(clk_61p44MHz), .addra(cnt), .wea(wea), .douta(ram_out), .clkb(clk_61p44MHz), .dinb({coe_r, coe_i}), .addrb(address),
.web(we_coe));
endmodule
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -