在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 16198|回复: 50

[求助] 哪位大神指导下我 让我成功驱动这块芯片 在输出端打出时钟信号

[复制链接]
发表于 2017-6-27 16:11:00 | 显示全部楼层 |阅读模式
150资产

发表于 2017-6-27 16:49:17 | 显示全部楼层
打不出来,你放弃吧。什么信息都没有
 楼主| 发表于 2017-6-28 09:18:37 | 显示全部楼层
回复 2# harry_hust

不好意思 在前一个帖子里面
 楼主| 发表于 2017-6-28 09:23:45 | 显示全部楼层
回复 1# pandapigwtj


   这里上传时钟管理芯片LMK03000的配置时序图,chipscope仿真图与在modelsim中的仿真图

lmk配置时序图

lmk配置时序图

chipscope中仿真图

chipscope中仿真图

modelsim中仿真图

modelsim中仿真图
 楼主| 发表于 2017-6-28 09:25:00 | 显示全部楼层
回复 1# pandapigwtj

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date:    16:54:22 08/18/2016
// Design Name:
// Module Name:    LMK
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module LMK(
    output sync,     //Device control

output goe,

input lmk_ld,



output clk_wire,   //Register control

output reg data_wire,

output reg le_wire,



input clk_4,

input rst1


    );


assign clk_wire = clk_4;

parameter  IDLE    =  5'b0_0001,
           SET_DATA = 5'b0_0010,

  SEND_DATA= 5'b0_0100,

  END_DATA = 5'b0_1000;
reg  [4:0]  state;

  
// Register Bit Value

localparam  RESET_BIT    =  1'b1;
localparam  CLKOUT0_MUX  =  2'h1; // divided mode,相对于bypass模式增加了100ps的延时
localparam  CLKOUT0_EN   =  1'b0;//disabled
localparam  CLKOUT0_DIV  =  8'h10; //clock output divider value is 8
localparam  CLKOUT0_DLY  =  4'h0; //默认值0,无延迟,,,,, dly time
//R0 Bit

localparam  CLKOUT1_MUX  =  2'h1;// divided mode,相对于bypass模式增加了100ps的延时          // ADC Clock
localparam  CLKOUT1_EN   =  1'b1;//enabled
localparam  CLKOUT1_DIV  =  8'h10;// clock output divider value is 8
localparam  CLKOUT1_DLY  =  4'h0;//默认值0,无延迟
//R1 Bit

localparam  CLKOUT2_MUX  =  2'h1;// divided mode,相对于bypass模式增加了100ps的延时
localparam  CLKOUT2_EN   =  1'b0;//disabled,备用
localparam  CLKOUT2_DIV  =  8'h20;//clock output divider value is 10
localparam  CLKOUT2_DLY  =  4'h0;//默认值0,无延迟
//R2 Bit

localparam  CLKOUT3_MUX  =  2'h1;// divided mode,相对于bypass模式增加了100ps的延时
localparam  CLKOUT3_EN   =  1'b0;//disabled,备用
localparam  CLKOUT3_DIV  =  8'h20;//默认值,clock output divider value is 20
localparam  CLKOUT3_DLY  =  4'h0;//延时150ps,divided mode下有效
//R3 Bit

localparam  CLKOUT4_MUX  =  2'h1;//默认,bypassed mode,无延时
localparam  CLKOUT4_EN   =  1'b0;//disabled
localparam  CLKOUT4_DIV  =  8'h20;//默认值,clock output divider value is 10
localparam  CLKOUT4_DLY  =  4'h0;//默认值0,无延迟
//R4 Bit

localparam  CLKOUT5_MUX  =  2'h1;// divided mode,相对于bypass模式增加了100ps的延时
localparam  CLKOUT5_EN   =  1'b0;//disabled
localparam  CLKOUT5_DIV  =  8'h5;//默认值,clock output divider value is 2
localparam  CLKOUT5_DLY  =  4'h0;//默认值0,无延迟
//R5 Bit

localparam  CLKOUT6_MUX  =  2'h1;// divided mode,相对于bypass模式增加了100ps的延时
localparam  CLKOUT6_EN   =  1'b0;//disabled
localparam  CLKOUT6_DIV  =  8'h5;//默认值,clock output divider value is 4
localparam  CLKOUT6_DLY  =  4'h0;//默认值0,无延迟
//R6 Bit

localparam  CLKOUT7_MUX  =  2'h0;// divided mode,相对于bypass模式增加了100ps的延时
localparam  CLKOUT7_EN   =  1'b0;//disabled
localparam  CLKOUT7_DIV  =  8'h5;//默认值,clock output divider value is 6
localparam  CLKOUT7_DLY  =  4'h0;//默认值0,无延迟
//R7 Bit

localparam  VBOOST       =  1'b0;//不编程时默认值为0,enabled时,所有输出时钟的输出电压增加,噪声也增加
//R9 Bit

localparam  DIV4         =  1'b1;//以防相位检测器频率高于20MHz,若高于除以4
//R11 Bit

localparam  OSCIN_FREQ   =  8'd100;//输入100MHz频率
localparam  VCO_R4_LF    =  3'h0;//默认,R4的值
localparam  VCO_R3_LF    =  3'h0;//默认,R3的值
localparam  VCO_C3_C4_LF =  4'h0;//默认,c3,c4的值
//R13 Bit

localparam  EN_FOUT      =  1'b0;//默认,Fout引脚没有被使能
localparam  EN_CLKOUT_GB =  1'b1;//默认
localparam  POWERDOWN    =  1'h0;//默认
localparam  PLL_MUX      =  4'd0;//LD引脚的输出模式为push—pull,功能是数字锁定检测
localparam  PLL_R        = 12'd100;//默认为10,PLL R Divider value is 2
//R14 Bit

localparam  PLL_CP_GAIN  =  2'h0;//默认
localparam  VCO_DIV      =  4'd2;//默认为2,VCO Divider value is 3
localparam  PLL_N        = 18'd750;//PLL N Divider value is 750,默认为760
//R15 Bit

//   Fvoc=OSCIN_FREQ*PLL_N*VCO_DIV/PLL_R; 1500MHz
//   

// Registers Configuration Value
parameter VAL_REG0  = {RESET_BIT, 12'h0, CLKOUT0_MUX, CLKOUT0_EN, CLKOUT0_DIV, CLKOUT0_DLY, 4'h0};//R0
parameter VAL_REG1  = {13'h0, CLKOUT1_MUX, CLKOUT1_EN, CLKOUT1_DIV, CLKOUT1_DLY, 4'h1};           //R1
parameter VAL_REG2  = {13'h0, CLKOUT2_MUX, CLKOUT2_EN, CLKOUT2_DIV, CLKOUT2_DLY, 4'h2};           //R2
parameter VAL_REG3  = {13'h0, CLKOUT3_MUX, CLKOUT3_EN, CLKOUT3_DIV, CLKOUT3_DLY, 4'h3};           //R3
parameter VAL_REG4  = {13'h0, CLKOUT4_MUX, CLKOUT4_EN, CLKOUT4_DIV, CLKOUT4_DLY, 4'h4};           //R4
parameter VAL_REG5  = {13'h0, CLKOUT5_MUX, CLKOUT5_EN, CLKOUT5_DIV, CLKOUT5_DLY, 4'h5};           //R5
parameter VAL_REG6  = {13'h0, CLKOUT6_MUX, CLKOUT6_EN, CLKOUT6_DIV, CLKOUT6_DLY, 4'h6};           //R6
parameter VAL_REG7  = {13'h0, CLKOUT7_MUX, CLKOUT7_EN, CLKOUT7_DIV, CLKOUT7_DLY, 4'h7};           //R7
parameter VAL_REG8  =  32'b0001_0000_0000_0000_0000_1001_0000_1000;                               //R8
parameter VAL_REG9  = {15'h5001, VBOOST, 16'h2a09};                                               //R9
parameter VAL_REG11 = {16'h82, DIV4, 15'hb};                                                      //R11
parameter VAL_REG13 = {10'ha, OSCIN_FREQ, VCO_R4_LF, VCO_R3_LF, VCO_C3_C4_LF, 4'hd};              //R13
parameter VAL_REG14 = {3'h0, EN_FOUT, EN_CLKOUT_GB, POWERDOWN, 2'h0, PLL_MUX, PLL_R, 8'he};       //R14
parameter VAL_REG15 = {PLL_CP_GAIN, VCO_DIV, PLL_N, 8'hf};                                        //R15

assign  sync = ~rst1;    //同步引脚低电平有效,直接连至复位
assign  goe  = lmk_ld;   //根据数据手册,两个引脚通常连在一起

reg [31:0] data = 32'h0;
reg [3:0]  cnt1 = 4'h0;     //寄存器计数
reg [4:0]  cnt2 = 5'h0;     //数据传输位数计数

//always @(negedge clk_4)  //20170607_1727
always @(posedge clk_4 or negedge rst1)
begin
  if (!rst1)  begin           //将rst1改为!rst1  20170607_1728
      state          <= IDLE;

le_wire        <= 1'b1;

data_wire      <= 1'b0;

cnt1           <= 4'h0;

   cnt2           <= 5'h0;

data           <= 32'h0;

        end
  else  begin
(* FULL_CASE *)   case(state)

     IDLE:  begin

      le_wire    <= 1'b1;

      
data_wire  <= 1'b0;
      
cnt1       <= 4'h0;
      
   cnt2       <= 5'h0;

      
data       <= 32'h0;

   state      <= SET_DATA ;  

      end
        SET_DATA : begin      

le_wire  <= 1'b0;

    cnt2     <= 5'h0;


if (cnt1 == 4'h0)   begin

      cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;
  
         data <= VAL_REG0; // Reset Chip

                 end

else if (cnt1 == 4'h1) begin
                  cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;
      
  data <= {1'b0, VAL_REG0[30:0]}; // REG0

              end

else if (cnt1 == 4'h2)  begin

      cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;

      data <= VAL_REG1; // REG1

              end
          else if (cnt1 == 4'h3) begin
                  cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;
            
data <= VAL_REG2; // REG2

             end

   else if (cnt1 == 4'h4) begin
                  cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;
      
data <= VAL_REG3 ; // REG3

             end
           else if (cnt1 == 4'h5) begin
                  cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;
                  data <= VAL_REG4 ; // REG4

             end
            else if (cnt1 == 4'h6)  begin

      cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;

      data <= VAL_REG5; // REG5

             end

else if (cnt1 == 4'h7)  begin

      cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;

      data <= VAL_REG6 ; // REG6

             end

else if (cnt1 == 4'h8) begin
                  cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;
      
data <= VAL_REG7 ; // REG7

             end

else if (cnt1 == 4'h9)  begin

      cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;  

   data <= VAL_REG8 ; // REG8

             end

else if (cnt1 == 4'ha)  begin

      cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;

      data <= VAL_REG9 ; // REG9

             end

else if (cnt1 == 4'hb)  begin

      cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;

      data <= VAL_REG11; // REG11

             end

else if (cnt1 == 4'hc) begin

      cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;   

data <= VAL_REG13; // REG13

             end

else if (cnt1 == 4'hd) begin
                  cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;
            
data <= VAL_REG14; // REG14

             end

else if (cnt1 == 4'he)  begin

      cnt1 <= cnt1 + 1'b1;  state <= SEND_DATA ;   

data <= VAL_REG15; // REG15

                  end

else   begin

  state         <= END_DATA;

         
end

         end


SEND_DATA:  begin

      le_wire    <= 1'b0;

data_wire  <= data[31];

data <= {data[30:0], 1'b0};

cnt2  <= cnt2 + 1'b1;


if (&cnt2) begin

  state  <= SET_DATA;


  cnt2 <= 5'h0;

  le_wire <= 1'b1;    //20170607_1722

         
end

else  begin

  state  <= SEND_DATA;

                   end
  
                  end
       END_DATA:  begin
            //le_wire   <= 1'b1;   // 20170607_1722

le_wire <= 1'b0;
            data_wire  <= 1'b0;



state <= IDLE;   //20170607_1722
                 end
       default: state <= IDLE;

   
      endcase

end
end
endmodule

这里贴上配置这块芯片的代码
 楼主| 发表于 2017-6-28 09:28:53 | 显示全部楼层
回复 1# pandapigwtj

lmk03000.pdf (1019.38 KB, 下载次数: 7 )
这里为lmk03000的datasheet,现在情况属于我用现在的代码烧录进去后,在相应的clk—out端口并不能得到输出,但是对比时序图和modelsim的仿真图以及chipscope抓取的图,又找不到问题所在,所以希望大神指点一番。spartan6与lmk03000之间的配置的三条线上用示波器打了是有对应的数据和图像的。但在lmk芯片输出差分时钟端口,只能打到有规律性的杂波,看不到真正的输出。
 楼主| 发表于 2017-6-28 09:30:14 | 显示全部楼层
回复 1# pandapigwtj

已经上传代码,在代码审核后会有的,也可以参考我之前发的那个帖子。急急急啊 大神们
发表于 2017-6-28 10:50:49 | 显示全部楼层
回复 7# pandapigwtj


    这种不一定就是软件方面的问题,你可以先排除硬件方面的问题。比如电源啊、时钟啊等等
 楼主| 发表于 2017-6-29 09:44:03 | 显示全部楼层
回复 8# 大林
老铁,你指的是对于LMK03000芯片的供电以及外部的时钟晶振等问题哇,确认了晶振是没有问题的。50MHz和100MHz均在示波器里面打出来了。
发表于 2017-6-29 12:06:20 | 显示全部楼层
你看看输出时钟的频率,数据和时钟之间的保持时间是否符合芯片要求,不能只看输出的波形。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 07:37 , Processed in 0.022790 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表