UpConv.v

Doubles the data rate and upconverts the 10-MHz IF frequency to 50 MHz prior to digital-to-analog conversion. A filter is employed to remove 10- and 70-MHz lines.

Up conversion

Ports | Parameters | Notes | Example

Ports

clk1finputThe clock input.
clk2finputThe double-rate clock input.
ininputThe input data stream.
outoutputThe double-rate output data stream.

Parameters

dw14The bit width of the data stream. If this parameter is changed, the 1/sqrt(2) constant coded into the module may need to be changed.

Notes

Filter response and illustrative spectrum.

DAC output filter

Up conversion is conceptually interleaving the original data samples with zero samples, which multiplies the sample frequency and consequently the size of the frequency space. The signal spectrum is replicated in the remainder of the upconverted frequency space. In our application, the signal spectrum has lines at 10 and 30 MHz, which are replicated to additional lines at 50 and 70 MHz. The line at 50 MHz is the wanted line, while the lines at 10, 30, and 70 MHz are unwanted.

So the function of the filter is to weed out the unwanted lines in the signal spectrum (red), in this case at 10 MHz and 70 MHz. The lines at 30 and 50 MHz are kept. (The 30-MHz line cannot be removed independently of the 50-MHz line because this is a real-valued data stream.) The filter response shown in blue, which is implemented in this module, is the simplest filter that has this property.

In the graph, Ts is the up-converted sampling interval.

In the block diagram, blocks to the right of 40-MHz select block are clocked at double the incoming sample rate.

Example instantiation:

wire			clk_40, clk_80;
wire	signed [14:0]	din, dout;
UpConv #(.dw(15)) UpConversion (
	.clk1f(clk_40),	.clk2f(clk_80),
	.in(din),	.out(dout)
);