| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- module MmcmWrapper
- #(
- parameter SpiNum = 7
- )
- (
- input Clk_i,
- input Rst_i,
- input [7:0] BaudRate0_i,
- input [7:0] BaudRate1_i,
- input [7:0] BaudRate2_i,
- input [7:0] BaudRate3_i,
- input [7:0] BaudRate4_i,
- input [7:0] BaudRate5_i,
- input [7:0] BaudRate6_i,
- output [SpiNum-1:0] SpiClk_o,
- output Clk100_o,
- output Clk40_o
- );
- //================================================================================
- // REG/WIRE
- //================================================================================
-
- wire clk0out;
- wire clk1out;
- wire clk2out;
- wire clk3out;
- wire clk4out;
- wire clk5out;
- wire clk6out;
- wire locked;
- wire [SpiNum-1:0] clkOutMMCM;
- wire [SpiNum-1:0] clkMan;
- wire [0:2] clkNum [SpiNum-1:0];
- wire [0:3] clkDiv [SpiNum-1:0];
- wire [SpiNum-1:0] clkCh;
- wire [SpiNum-1:0] spiClk;
- //================================================================================
- // ASSIGNMENTS
- //================================================================================
- // assign SpiClk_o[0] = clk1out;
- // assign SpiClk_o[1] = clk2out;
- // assign SpiClk_o[2] = clk3out;
- // assign SpiClk_o[3] = clk4out;
- // assign SpiClk_o[4] = clk5out;
- // assign SpiClk_o[5] = clk6out;
- // assign SpiClk_o[6] = clk7out;
- assign clkNum[0] = BaudRate0_i[7:5];
- assign clkNum[1] = BaudRate1_i[7:5];
- assign clkNum[2] = BaudRate2_i[7:5];
- assign clkNum[3] = BaudRate3_i[7:5];
- assign clkNum[4] = BaudRate4_i[7:5];
- assign clkNum[5] = BaudRate5_i[7:5];
- assign clkNum[6] = BaudRate6_i[7:5];
- assign clkDiv[0] = BaudRate0_i[3:0];
- assign clkDiv[1] = BaudRate1_i[3:0];
- assign clkDiv[2] = BaudRate2_i[3:0];
- assign clkDiv[3] = BaudRate3_i[3:0];
- assign clkDiv[4] = BaudRate4_i[3:0];
- assign clkDiv[5] = BaudRate5_i[3:0];
- assign clkDiv[6] = BaudRate6_i[3:0];
- assign clkCh[0] = BaudRate0_i[4];
- assign clkCh[1] = BaudRate1_i[4];
- assign clkCh[2] = BaudRate2_i[4];
- assign clkCh[3] = BaudRate3_i[4];
- assign clkCh[4] = BaudRate4_i[4];
- assign clkCh[5] = BaudRate5_i[4];
- assign clkCh[6] = BaudRate6_i[4];
- assign SpiClk_o[0] = spiClk[0];
- assign SpiClk_o[1] = spiClk[1];
- assign SpiClk_o[2] = spiClk[2];
- assign SpiClk_o[3] = spiClk[3];
- assign SpiClk_o[4] = spiClk[4];
- assign SpiClk_o[5] = spiClk[5];
- assign SpiClk_o[6] = spiClk[6];
- assign Clk100_o = clk0out;
- assign Clk40_o = clk5out;
- //================================================================================
- // LOCALPARAMS
- //================================================================================
- //================================================================================
- // CODING
- //================================================================================
-
- // genvar i;
- // generate
- // for (i=0; i < SpiNum; i = i +1) begin : ClkGen
- // ClkGen ClkGen_inst (
- // .Clk_i(clk1out),
- // .ClkDiv_i(clkDiv[i]),
- // .Rst_i(Rst_i),
- // .Clk_o(clkMan[i])
- // );
- // clkOutMMCM clkOutMMCM_inst (
- // .Rst_i(Rst_i),
- // .clkNum(clkNum[i]),
- // .clk0out(clk0out),
- // .clk1out(clk1out),
- // .clk2out(clk2out),
- // .clk3out(clk3out),
- // .clk4out(clk4out),
- // .clk5out(clk5out),
- // .clk6out(clk6out),
- // .clkOutMMCM(clkOutMMCM[i])
- // );
- // ClkCh ClkCh_inst (
- // .Rst_i(Rst_i),
- // .clkCh(clkCh[i]),
- // .clkOutMMCM(clkOutMMCM[i]),
- // .clkMan(clkMan[i]),
- // .SpiClk_o(spiClk[i])
- // );
- // end
- // endgenerate
- ClkDiv ClkDiv_inst
- (
- // Clock out ports
- .clk_out1(clk0out), //100 MHz
- .clk_out2(clk1out), // 80 MHz
- .clk_out3(clk2out), // 70 MHz
- .clk_out4(clk3out), // 60MHz
- .clk_out5(clk4out), // 50MHz
- .clk_out6(clk5out), // 40MHz
- .clk_out7(clk6out), // 30MHz
- // Status and control signals
- .reset(Rst_i), // input reset
- .locked(locked), // output locked
- // Clock in ports
- .clk_in1(Clk_i)); // input clk_in1
- endmodule
|