📄 cicnew.v
字号:
module CICnew(RST,Sysclk,LDi,RDi,DInEn,DOutEn,LDo,RDo);
parameter ORDER=4; //order of CIC
parameter UP_POWER=3; //up_sample_times=2^UP_POWER
parameter BIT_WIDTH=16; //input and output word width
parameter OUTPUT_DATA_CLOCK=1; //output data occupy clock number.
parameter CNT_WIDTH=1; //2^CNT_WIDTH>=OUTPUT_DATA_CLOCK
input RST,Sysclk,DInEn;
input signed [BIT_WIDTH-1:0] LDi,RDi;
//input signed [BIT_WIDTH-2:0] LDi1,RDi1;
//wire signed [BIT_WIDTH-1:0] LDi,RDi;
//assign LDi = {LDi1[14],LDi1[14:0]};
//assign RDi = {RDi1[14],RDi1[14:0]};
output DOutEn;
output[BIT_WIDTH-1:0] LDo,RDo;
reg DOutEn;
reg[BIT_WIDTH-1:0] LDo,RDo;
reg[BIT_WIDTH+UP_POWER*(ORDER-1)-1:0] iI[ORDER-1:0],iQ[ORDER-1:0];
reg[BIT_WIDTH+UP_POWER*(ORDER-1)-1:0] cI[ORDER-1:0],cQ[ORDER-1:0];
reg[BIT_WIDTH+UP_POWER*(ORDER-1)-1:0] cId[ORDER-2:0],cQd[ORDER-2:0];
reg OldLclk,load;
integer m;
reg[CNT_WIDTH-1:0] k;
always@(posedge Sysclk or posedge RST) begin : Comb
if(RST) begin
for(m=0;m<ORDER;m=m+1) begin
cI[m]<=0;cQ[m]<=0;
end
for(m=0;m<ORDER-1;m=m+1) begin
cId[m]<=0;cQd[m]<=0;
end
iI[0]<=0;iQ[0]<=0;
OldLclk<=1'b1;
load<=DInEn;
end
else begin
if(load) begin
cI[0]<={{UP_POWER*(ORDER-1){LDi[BIT_WIDTH-1]}},LDi};
cQ[0]<={{UP_POWER*(ORDER-1){RDi[BIT_WIDTH-1]}},RDi};
for(m=0;m<ORDER-1;m=m+1) begin
cI[m+1]<=cI[m]-cId[m];
cQ[m+1]<=cQ[m]-cQd[m];
cId[m]<=cI[m];
cQd[m]<=cQ[m];
end
iI[0]<=cI[ORDER-1];iQ[0]<=cQ[ORDER-1];
end
OldLclk<=DInEn;
load<=(OldLclk==1)&&(DInEn==0);
end
end
always@(posedge Sysclk or posedge RST) begin:Integerator
if(RST==1) begin
for(m=1;m<ORDER;m=m+1) begin
iI[m]<=0;iQ[m]<=0;
end
k<=0;
DOutEn<=1'b0;
end
else begin
if(k==(OUTPUT_DATA_CLOCK-1)) begin
for(m=1;m<ORDER;m=m+1) begin
iI[m]<=iI[m]+iI[m-1];
iQ[m]<=iQ[m]+iQ[m-1];
end
LDo <=iI[ORDER-1][BIT_WIDTH+UP_POWER*(ORDER-1)-1:UP_POWER*(ORDER-1)];
RDo <=iQ[ORDER-1][BIT_WIDTH+UP_POWER*(ORDER-1)-1:UP_POWER*(ORDER-1)];
k<=0;DOutEn<=1'b1;
end
else begin
k<=k+1'b1;
DOutEn<=1'b0;
end
end
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -