標籤:
DCM_BASE
基本數字時鐘管理模組的縮寫,是相伴和頻率可配置的數字鎖相環電路,常用於FPGA系統中複雜的時鐘管理。
如需要頻率和相位動態配置,則可以選用DCM_ADV原語,如需要相位動態位移,可使用DCM_PS原語。
Eg. DCM_BASE #
(
.CLKDV_DIVIDE(2.0), //CLKDV分頻比可以設定為1.5,2.5,3.0,3.5,14.0,15.0等
.CLKFX_DIVIDE(1), //can be any integer from 1 to 32 CLKFX訊號的分配比
.CLKFX_MULTIPL(4), //CLKFX的倍頻比,可為2到32之間的任意整數
.CLKIN_DIVIDE_BY_2("FALSE",) //輸入訊號2分頻的使能訊號,可設定為TRUE/FALSE
.CLKIN_PERIOD(10.0), //指定輸入時鐘的周期,單位為ns,數值範圍為1.25~1000.00
.CLKOUT_PHASE_SHIFT("NONE"), //指定移相模式,可設定為NONE/FIXED
.CLK_FEEDBACK("1X"), //指定反饋時鐘的頻率,可設定為NONE/1X/2X,相應頻率關係都是針對CLK0而言
.DCM_PERFORMANCE_MODE("MAX_SPEED"), //DCM模組效能模式,可設定為MAX_SPEED/MAX_RANGE
.DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), //抖動調整,可設定為源同步,系統同步或0-15之間能任意整數
.DFS_FREQUENCY_MODE("LOW"), //數字頻率合成模式,可設定為LOW/HIGH兩種模式
.DLL_FREQUENCY_MODE("LOW"), //DLL頻率模式,可設定為LOW/HIGH/HIGH_SER
.DUTY_CYCLE_CORRECTION("TRUE"), //設定是否採用雙周期校正,可設定為TRUE/FALSE
.FACTORY_JF(16‘hf0f0), //16位元的JF因子參數
.PHASE_SHIFT(0), //固定相移數值,可設定為-255~1023之間任意整數
.STARTUP_WAIT("FALSE") //等DCM鎖相後再延時配置DONF管腳,可設定為TRUE/FALSE
)
DCM_BASE_inst (
.CLK0(CLK0), //0度移相的DCM時鐘輸出
.CLK180(CLK180), //180度移相的DCM時鐘輸出
.CLK270( CLK270), //270度移相的DCM時鐘輸出
.CLK2X( CLK2X ), //dcm模組的2倍頻輸出
.CLK2X180( CLK2X180 ), //經過180度相移的DCM模組2倍頻輸出
.CLK90( CLK90 ), //90度移相的DCM時鐘輸出
.CLKDV ( CLKDV ), //DCM模組的分頻輸出,分頻比為CLKDV_DIVIDE
.CLKFX( CLKFX ), //DCM合成時鐘輸出,分頻比為(M/D)
.CLKFX180( CLKFX180 ), //180度移相的DCM合成時鐘輸出
.LOCKED ( LOCKED ), //DCM鎖相狀態輸出訊號
.CLKFB ( CLKFB ), //DCM模組的反饋時鐘訊號
.CLKIN ( CLKIN ), //DCM模組的時鐘輸入訊號
.RST ( RST ) //DCM模組的非同步複位訊號
);
PLL_BASE xilinx低端FPGA中都用DCM,進階一點的都用PLL,使用PLL時,輸出時鐘
Clk_out=Clkin*Mult/DIVCLK_DIVIDE/CLKOUTx_DIVIDE;
Eg. PLL_BASE #
(
.BANDWIDTH("IPTIMIZED"), //HIGH/LOW/OPTIMIZED
.CLKFBOUT_MULT(2), //Multiplication factor for all output clocks
.CLKFBOUT_PHASE(0.0), //Phase shift degress of all output clocks
.CLKIN_PERIOD(0.000), //clock period(ns) of input clock on clkin
.CLKOUT0_DIVIDE(5), //Division factor for CLKOUT0 (1 to 28)
.CLKOUT0_DUTY_CYCLE(0.5), //duty cycle for CLKOUT0 (0.01 TO 0.99)
.CLKOUT0_PHASE(0.0), //phase shift degrees for CLK1UT0 (0.0 TO 360.0)
.CLKOUT1_DIVIDE(1), //Division factor for CLKOUT1 (1 to 28)
.CLKOUT1_DUTY_CYCLE(0.5), //duty cycle for CLKOUT1 (0.01 TO 0.99)
.CLKOUT1_PHASE(0.0), //phase shift degrees for CLKOUT2 (0.0 TO 360.0)
.CLKOUT2_DIVIDE(1), //Division factor for CLKOUT2 (1 to 28)
.CLKOUT2_DUTY_CYCLE(0.5), //duty cycle for CLKOUT2 (0.01 TO 0.99)
.CLKOUT2_PHASE(90), //phase shift degrees for CLKOUT2 (0.0 TO 360.0)
.CLKOUT3_DIVIDE(2), //Division factor for CLKOUT3 (1 to 28)
.CLKOUT3_DUTY_CYCLE(0.5), //duty cycle for CLKOUT3 (0.01 TO 0.99)
.CLKOUT3_PHASE(0.0), //phase shift degrees for CLKOUT3 (0.0 TO 360.0)
.CLKOUT4_DIVIDE(1), //Division factor for CLKOUT4 (1 to 28)
.CLKOUT4_DUTY_CYCLE(0.5), //duty cycle for CLKOUT4 (0.01 TO 0.99)
.CLKOUT4_PHASE(0.0), //phase shift degrees for CLKOUT4 (0.0 TO 360.0)
.CLKOUT5_DIVIDE(5), //Division factor for CLKOUT5 (1 to 28)
.CLKOUT5_DUTY_CYCLE(0.5), //duty cycle for CLKOUT5 (0.01 TO 0.99)
.CLKOUT5_PHASE(0.0), //phase shift degrees for CLKOUT5 (0.0 TO 360.0)
.COMPENSATION("SYSTEM_SYNCHRONOUS"), //SYSTEM_SYNCHRONOUS/SOURCE_SYNCHRONOUS/INTERNAL/EXTERNAL
//DCM2PLL/PLL2DCM
.DIVCLK_DIVIDE(1), //division factor for all clocks (1 to 52)
.REF_JITTER(0.100) //input reference jitter (0.000 to 0.999 U1%)
)
pll2_inst (
.CLKFBOUT ( CLKFBIN ),//General output feedback signall
.CLKOUT0 ( clk_100M ),
.CLKOUT1 (),
.CLKOUT2 (),
.CLKOUT3 (),
.CLKOUT4 (),
.CLKOUT5 (),
.LOCKED ( ),
.CLKFBIN ( CLKFBIN ), //CLOCK feedback input
.CLKIN ( clk ), //clock input
.RST ( ~rst_n ) //asynchronous pll reset
);
xilinx原語DCM,PLL的使用