IEEE1588時鐘同步(2)
阿新 • • 發佈:2018-12-30
程式猿,用程式碼記錄生活
2018/12/28
-
簡單的搭了下電路:
-
簡單寫一下管腳約束檔案
######## 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,向暫存器寫資料。然後一步一步來試吧。