1. 程式人生 > >IEEE1588時鐘同步(2)

IEEE1588時鐘同步(2)

程式猿,用程式碼記錄生活

2018/12/28

  1. 簡單的搭了下電路:
    在這裡插入圖片描述

  2. 簡單寫一下管腳約束檔案

########  clk  #####
NET "fosc"         LOC = "P8";   
NET "HIGH_FOSC"    LOC = "P9";

########    TEST       #########
NET "LED1"         LOC = "M16";   
NET "LED2"         LOC = "N16";
NET "LED_ON"       LOC = "L16";
NET "TEST1" 		 LOC = "T13";
NET "TEST2" 		 LOC = "T14";
NET "TEST3"  		 LOC = "R15";
NET "TEST4" 		 LOC = "P15";
NET "TEST5" 		 LOC = "P16";

########## DP83640-A ############################

NET "PMDIO"    LOC = "H3";     # SMI DATA CLOCK
NET "PMDC"     LOC = "J1";     # SMI DATA I/O

NET "PCOL"     LOC = "C4";     # PHY ADDRESS [4:0]
NET "PRXD3"    LOC = "G2";
NET "PRXD2"    LOC = "H1";
NET "PRXD1"    LOC = "F3";
NET "PRXD0"    LOC = "G1";

NET "PRXDV"    LOC = "E2";     # select MII MODE = 0 & RMII MODE = 1
NET "PRXER"    LOC = "D3";     # RECEIVE ERROR

NET "PRXCLK"   LOC = "F1";     # O MII RECEIVE CLOCK & RMII  
NET "PTXCLK"   LOC = "C2";     # O MII RECEIVE CLOCK & RMII
 
NET "PTXEN"    LOC = "D1";     # I 
NET "PTXER"    LOC = "E1"; 
   
NET "PTXD0"    LOC = "B3";     # MII RECEIVE DATA [3:0]  & RMII RECEIVE DATA [1:0]
NET "PTXD1"    LOC = "C1"; 
NET "PTXD2"    LOC = "B4"; 
NET "PTXD3"    LOC = "A3"; 

NET "PCRS"     LOC = "A4";

########    DP83640-B    #########

NET "BPMDIO"    LOC = "B6";    # SMI DATA CLOCK
NET "BPMDC"     LOC = "A6";    # SMI DATA I/O

NET "BPCOL"     LOC = "B14";   # PHY ADDRESS [4:0]
NET "BPRXD3"    LOC = "C7";
NET "BPRXD2"    LOC = "A7";
NET "BPRXD1"    LOC = "B8";
NET "BPRXD0"    LOC = "A8";

NET "BPRXDV"    LOC = "C9";    #select MII MODE = 0 & RMII MODE = 1
NET "BPRXER"    LOC = "B10";   # RECEIVE ERROR

NET "BPRXCLK"   LOC = "A9";    # O MII RECEIVE CLOCK & RMII 
NET "BPTXCLK"   LOC = "C11";   # O MII RECEIVE CLOCK & RMII

NET "BPTXER"    LOC = "A10"; 
NET "BPTXEN"    LOC = "A11"; 

NET "BPTXD0"    LOC = "B12";   # MII RECEIVE DATA [3:0]  & RMII RECEIVE DATA [1:0]
NET "BPTXD1"    LOC = "A12"; 
NET "BPTXD2"    LOC = "C13"; 
NET "BPTXD3"    LOC = "A13"; 

NET "BPCRS"     LOC = "A14";

註釋是依照晶片手冊簡單查了一下。

首先是定義暫存器:MDC/MDIO 序列管理介面
在這裡插入圖片描述

晶片手冊的 page 58-59 是對暫存器地址和功能的描述。
page 60 之後是定義Register Data 每一位的含義。

看了晶片手冊還是亂糟糟的,這個MII mode 和 RMII mode 是區分使用引腳數量不同麼?
看個一篇Applicaion Note :AN-1729 裡面 3.1 簡單介紹了一個 rate correction function
先簡單寫一個module,向暫存器寫資料。然後一步一步來試吧。