| module top(input clk, stb, di, output do); | |
| localparam integer DIN_N = 160; | |
| localparam integer DOUT_N = 160; | |
| reg [DIN_N-1:0] din; | |
| wire [DOUT_N-1:0] dout; | |
| reg [DIN_N-1:0] din_shr; | |
| reg [DOUT_N-1:0] dout_shr; | |
| always @(posedge clk) begin | |
| din_shr <= {din_shr, di}; | |
| dout_shr <= {dout_shr, din_shr[DIN_N-1]}; | |
| if (stb) begin | |
| din <= din_shr; | |
| dout_shr <= dout; | |
| end | |
| end | |
| assign do = dout_shr[DOUT_N-1]; | |
| roi roi ( | |
| .clk(clk), | |
| .din(din), | |
| .dout(dout) | |
| ); | |
| endmodule | |
| module roi(input clk, input [159:0] din, output [159:0] dout); | |
| my_PLL | |
| #( | |
| .LOC("PLL_X0Y10") | |
| ) | |
| inst_0 ( | |
| .clk(clk), | |
| .din(din[ 0 +: 2]), | |
| .dout(dout[ 0 +: 7]) | |
| ); | |
| endmodule | |
| // --------------------------------------------------------------------- | |
| module my_PLL (input clk, input [1:0] din, output [6:0] dout); | |
| parameter LOC = ""; | |
| (* LOC=LOC *) | |
| PLLE4_BASE #( | |
| .CLKFBOUT_MULT(8), // Multiply value for all CLKOUT | |
| .CLKFBOUT_PHASE(0.0), // Phase offset in degrees of CLKFB | |
| .CLKIN_PERIOD(10.0), // Input clock period in ns to ps resolution (i.e. 33.333 is 30 MHz). | |
| .CLKOUT0_DIVIDE(1), // Divide amount for CLKOUT0 | |
| .CLKOUT0_DUTY_CYCLE(0.5), // Duty cycle for CLKOUT0 | |
| .CLKOUT0_PHASE(0.0), // Phase offset for CLKOUT0 | |
| .CLKOUT1_DIVIDE(1), // Divide amount for CLKOUT1 | |
| .CLKOUT1_DUTY_CYCLE(0.5), // Duty cycle for CLKOUT1 | |
| .CLKOUT1_PHASE(0.0), // Phase offset for CLKOUT1 | |
| .CLKOUTPHY_MODE("VCO_2X"), // Frequency of the CLKOUTPHY | |
| .DIVCLK_DIVIDE(1), // Master division value | |
| .IS_CLKFBIN_INVERTED(1'b0), // Optional inversion for CLKFBIN | |
| .IS_CLKIN_INVERTED(1'b0), // Optional inversion for CLKIN | |
| .IS_PWRDWN_INVERTED(1'b0), // Optional inversion for PWRDWN | |
| .IS_RST_INVERTED(1'b0), // Optional inversion for RST | |
| .REF_JITTER(0.0), // Reference input jitter in UI | |
| .STARTUP_WAIT("FALSE") // Delays DONE until PLL is locked | |
| ) | |
| PLLE4_BASE_inst ( | |
| .CLKFBOUT(dout[0]), // 1-bit output: Feedback clock | |
| .CLKOUT0(dout[1]), // 1-bit output: General Clock output | |
| .CLKOUT0B(dout[2]), // 1-bit output: Inverted CLKOUT0 | |
| .CLKOUT1(dout[3]), // 1-bit output: General Clock output | |
| .CLKOUT1B(dout[4]), // 1-bit output: Inverted CLKOUT1 | |
| .CLKOUTPHY(), // 1-bit output: Bitslice clock | |
| .LOCKED(dout[6]), // 1-bit output: LOCK | |
| .CLKFBIN(), // 1-bit input: Feedback clock | |
| .CLKIN(clk), // 1-bit input: Input clock | |
| .CLKOUTPHYEN(1'b1), // 1-bit input: CLKOUTPHY enable | |
| .PWRDWN(din[0]), // 1-bit input: Power-down | |
| .RST(din[1]) // 1-bit input: Reset | |
| ); | |
| endmodule |