鄭 輝,張芳園
(哈爾濱工程大學(xué)信息與通信工程學(xué)院,哈爾濱 150001)
?
基于FPGA與DSP的DS12CR887精密時(shí)鐘設(shè)計(jì)
鄭輝,張芳園
(哈爾濱工程大學(xué)信息與通信工程學(xué)院,哈爾濱 150001)
DS8887是一款內(nèi)置晶振和鋰電池的高精度時(shí)鐘芯片.介紹一種基于FPGA和DSP使用DS887精密時(shí)鐘芯片的設(shè)計(jì)方案.采用FPGA可以縮小設(shè)計(jì)周期,便于硬件實(shí)現(xiàn),提高系統(tǒng)的穩(wěn)定性;通過DSP控制實(shí)現(xiàn)對(duì)時(shí)間的讀取與寫入.本設(shè)計(jì)使得時(shí)鐘的讀取運(yùn)行時(shí)間短,操作簡單,系統(tǒng)穩(wěn)定.
精密時(shí)鐘;DSP;現(xiàn)場可編程邏輯器件(FPGA)
日歷芯片作為為系統(tǒng)提供精確時(shí)鐘的工具,是許多系統(tǒng)必須的一部分.按照接口的不同時(shí)鐘芯片可分為并行接口時(shí)鐘和串行接口時(shí)鐘,其中并行接口時(shí)鐘傳輸速度快、系統(tǒng)結(jié)構(gòu)復(fù)雜,串行接口時(shí)鐘結(jié)構(gòu)簡單、使用方便、傳輸速度慢[1-4].系統(tǒng)設(shè)計(jì)時(shí)對(duì)時(shí)鐘芯片的要求主要體現(xiàn)在兩方面[5]:一是要求時(shí)鐘芯片的精度要高;二是能夠斷電工作.達(dá)拉斯公司生產(chǎn)的DS12CR887時(shí)鐘芯片是一款功能豐富的并行接口時(shí)鐘芯片,能夠刷新星期、年、月、日、時(shí)、分、秒等信息,內(nèi)部還增加了世紀(jì)寄存器硬件電路.本文介紹一種基于FPGA和DSP的DS12CR887精密時(shí)鐘芯片的設(shè)計(jì)方案,可實(shí)現(xiàn)由DSP控制對(duì)日歷芯片的讀寫操作.
DS12CR887是由美國達(dá)拉斯半導(dǎo)體公司生產(chǎn)的CMOS并行實(shí)時(shí)時(shí)鐘芯片.DS12CR887內(nèi)置晶振和鋰電池,并將時(shí)鐘電路、圍電路、及其相關(guān)電路等嵌裝成一體.DS12CR887具有與微處理器連接的并行接口,可實(shí)現(xiàn)直接應(yīng)用于其他智能化設(shè)備中.
DS12CR887具有以下主要功能特點(diǎn):
1)可內(nèi)部供電.檢測外部電壓情況,當(dāng)外部電壓低于3V時(shí),芯片自動(dòng)選擇由內(nèi)部的鋰電池供電,保證時(shí)鐘正常運(yùn)行,防止數(shù)據(jù)丟失.
2)具有閏年自動(dòng)校正功能,實(shí)現(xiàn)準(zhǔn)確計(jì)時(shí).
3)可選擇夏令時(shí)運(yùn)行方式.
4)有MOTOROLA和INTEL兩種總線時(shí)序,可以根據(jù)需求靈活的選擇.
5)內(nèi)部有掉電保持RAM單元,可以存儲(chǔ)掉電時(shí)的時(shí)鐘日歷,報(bào)警信息,狀態(tài)控制字以及用戶的信息數(shù)據(jù).
6)內(nèi)地址空間為00H~7FH,其中00H~09H為年、月、日、時(shí)、分、秒、星期以及鬧秒、鬧分、鬧時(shí)的存儲(chǔ)單元.0AH~0DH單元分別為控制據(jù)存器A、B、C、D.通過訪問A、B、C、D四個(gè)寄存器可隨時(shí)設(shè)置和了解DS12CR887的工作方式.0EH~7FH為用戶RAM區(qū),可以用來在系統(tǒng)掉電時(shí)保存數(shù)據(jù).
本設(shè)計(jì)中系統(tǒng)控制芯片DSP采用ADSP系列芯片TS201.TS201芯片TS201是ADI公司第二代TigerSHARC系列的新成員,擁有600MHz的內(nèi)核工作頻率,具有強(qiáng)大的計(jì)算能力.
FPGA芯片為Xilinx公司的Sprant-6系列芯片XC6SLX100-3CSG484.XC6SLX100-3CSG484普通差分I/O接口傳輸數(shù)據(jù)速率最高達(dá)1 080Mb/s,完全能夠滿足傳輸需求,所以選擇LX系列芯片.
DS12CR887的數(shù)據(jù)線和控制線直接連到FPGA上,將DS12CR887的復(fù)位引腳、中斷引腳直接通過上拉電阻拉高,使得芯片一直處于工作狀態(tài).模式選擇引腳拉低,選擇INTEL模式.DSP的總線與FPGA連接,其硬件連接圖如圖1所示.
圖1 精密時(shí)鐘的硬件連接圖
3.1精確時(shí)鐘的時(shí)序分析
DS12CR887有兩種總線時(shí)序的工作方式,此設(shè)計(jì)中選擇INTEL總線時(shí)序方式,其寫命令時(shí)序圖如圖2所示,讀命令時(shí)序如圖3所示.
圖2 Intel模式的寫時(shí)序圖
圖3 Intel模式的讀時(shí)序圖
通過時(shí)序圖可以看出,無論是在讀操作時(shí)還是在寫操作時(shí),DS12CR887的復(fù)用總線上均先出現(xiàn)地址,后出現(xiàn)數(shù)據(jù).在執(zhí)行寫操作時(shí),片選CS信號(hào)有效情況下,將地址鎖存信號(hào)AS下降沿時(shí)的總線上的數(shù)據(jù)鎖存為地址,將讀寫信號(hào)RW上升沿時(shí)的總線數(shù)據(jù)寫入DS12CR887.讀操作同樣首先將數(shù)據(jù)線上的信號(hào)鎖存為DS12CR887的地址,然后DS12CR887的數(shù)據(jù)線上才輸出有效數(shù)據(jù).
3.2精確時(shí)鐘的寄存器設(shè)計(jì)
DS12CR887有四個(gè)寄存器,其中本文用到了寄存器A和寄存器B.兩個(gè)寄存器的功能表如表1和表2所示.
表1 寄存器A
表2 寄存器B
UIP是狀態(tài)標(biāo)志位,用來標(biāo)志是否將進(jìn)行更新,此外UIP會(huì)受到寄存器B的影響,不受復(fù)位信號(hào)的影響.當(dāng)寄存器B的SET位設(shè)為1時(shí),UIP被設(shè)為0并禁止更新.
DV0~DV2用來控制復(fù)位分頻器和晶體振蕩器,其中若使晶體振蕩器開啟并保持時(shí)鐘運(yùn)行則設(shè)為010,若使晶體振蕩器開啟,但分頻器保持復(fù)位狀態(tài)其設(shè)置為11X.本設(shè)計(jì)中設(shè)為010.
RS寄存器作用是選擇周期中斷的頻率和方波的頻率,此設(shè)計(jì)中我們?nèi)拷?
SET為0時(shí)芯片正常更新,為1時(shí)禁止更新,本設(shè)計(jì)選為禁止更新.
PIE、AIE、UIE是控制是否允許輸出IRQ信號(hào)的寄存器,本設(shè)計(jì)選擇不輸出中斷.
SQWE設(shè)置SQW引腳是否有方波輸出.本設(shè)計(jì)選擇有方波輸出.
DM選擇時(shí)鐘輸出的碼型,當(dāng)DM=0時(shí),輸出為二進(jìn)制,當(dāng)DM=1時(shí),輸出為BCD.本設(shè)計(jì)選擇BCD形式.
24/12位是選擇時(shí)間采取12小時(shí)制還是24小時(shí)制的寄存器.
DSE是夏令時(shí)允許標(biāo)志,本設(shè)計(jì)允許夏令時(shí)標(biāo)志.
3.3精確時(shí)鐘的總體設(shè)計(jì)
設(shè)計(jì)通過FPGA為DS12CR887做讀寫時(shí)序.DSP來寫入需要的數(shù)據(jù),F(xiàn)PGA通過地址譯碼的方式將所需要寫入的數(shù)據(jù)儲(chǔ)存到RAM中;FPGA每秒都會(huì)讀取DS12CR887中的數(shù)據(jù),并將其存放在寄存器中,在收到DSP的讀取命令時(shí),將數(shù)據(jù)傳輸給DSP.其系統(tǒng)結(jié)構(gòu)圖如圖4所示.
圖4 精密時(shí)鐘的總體框圖
3.4精密時(shí)鐘的FPGA實(shí)現(xiàn)
精密時(shí)鐘的FPGA的設(shè)計(jì)包括DS12CR887的讀模塊,DS12CR887的寫模塊以及DS12CR887的讀寫總線控制模塊.
總線控制模塊通過地址譯碼的方式來控制FPGA何時(shí)接收DSP給出的寫入DS12CR887數(shù)據(jù),何時(shí)向DSP從發(fā)送時(shí)鐘芯片讀到的時(shí)間,同時(shí)還控制DS12CR887的四路信號(hào)控制線即AS、DS、CS、RW在讀寫兩種狀態(tài)的時(shí)序之間的切換.圖5為FPGA的DS12CR887的讀寫總線控制模塊.
寫模塊將DSP需要寫入時(shí)鐘芯片的數(shù)據(jù)存儲(chǔ)到RAM中,當(dāng)DSP給出譯碼地址時(shí)觸發(fā)寫操作,將RAM中準(zhǔn)備好的數(shù)據(jù)寫入到時(shí)鐘芯片中.其FPGA頂層模塊如圖6所示.
讀模塊處于一直觸發(fā)的狀態(tài),它將在每一秒都會(huì)讀取DS12CR887的數(shù)據(jù)并將其存在寄存器中,再通過地址譯碼的方式,將寄存器中的數(shù)據(jù)送給DSP.讀模塊的FPGA頂層模塊圖如圖7所示.
圖5 DS12CR887總線控制模塊
圖6 DS12CR887寫模塊
3.5精密時(shí)鐘的DSP實(shí)現(xiàn)
DSPA采用C語言編寫,寫模塊包含的地址譯碼有:
#defineREG_Write_DATA_DS12887_regA0x3ffffc00 // 寄存器A
#defineREG_Write_DATA_DS12887_regB1 0x3ffffc10 // 寄存器B
#defineREG_Write_DATA_DS12887_sec0x3ffffc20 // 秒
#defineREG_Write_DATA_DS12887_min0x3ffffc30 // 分
#defineREG_Write_DATA_DS12887_hour0x3ffffc40 // 時(shí)
#defineREG_Write_DATA_DS12887_week0x3ffffc50 // 星期
#defineREG_Write_DATA_DS12887_date0x3ffffc60 // 日期
#defineREG_Write_DATA_DS12887_month0x3ffffc70 //月份
#defineREG_Write_DATA_DS12887_year0x3ffffc80 //年
寫入一個(gè)字節(jié)的程序?yàn)椋篟TC_Write_DATA_C=(int*)REG_Write_DATA_DS12887_sec;
*RTC_Write_DATA_C=BPV_RTC_TIME_Write.Sec;asm("nop;;");
DSP讀模塊的地址譯碼為:
#defineREG_DATA_A0x3ffff002 // **年 月 日
#defineREG_DATA_B0x3ffff000 // 星期 時(shí) 分 秒
讀一個(gè)字節(jié)的程序?yàn)椋?/p>
year=DateA>>16;
year=year&0x000000ff;BPV_RTC_TIME_Read.Year=year;
asm("nop;;");
圖7 DS12CR887讀模塊
為了驗(yàn)證設(shè)計(jì)方案的正確性,利用測試平臺(tái)對(duì)本次硬件設(shè)計(jì)進(jìn)行驗(yàn)證.
圖8為ChipScope捕捉到的讀狀態(tài)的控制線時(shí)序圖,于此同時(shí)FPGA從DS12CR887芯片中讀出來的數(shù)據(jù)如圖9所示.
圖8 DS12CR887讀時(shí)序圖
圖9 DS12CR887讀數(shù)據(jù)
通過FPGA100M時(shí)鐘采樣的結(jié)果可以看出,此設(shè)計(jì)可以準(zhǔn)確的創(chuàng)造出時(shí)鐘芯片所需要的INTEL工作模式的讀時(shí)序,并且可以讀出DS12CR887中的時(shí)間.
由于DS12CR887是地址數(shù)據(jù)復(fù)用總線時(shí)序,與DSP的讀寫時(shí)序不同,所以在接口設(shè)計(jì)時(shí)時(shí)序分析特別重要.本文采用FPGA做DS12CR887的總線時(shí)序,用DSP地址譯碼做總線的開關(guān).系統(tǒng)用DSP+FPGA的模式,使系統(tǒng)硬件平臺(tái)更加簡單、穩(wěn)定、靈活.
[1]徐文波.XilinxFPGA開發(fā)實(shí)用教程[M]. 北京: 清華大學(xué)出版社, 2013.
[2]劉書明.ADSPTS20XS系列DSP原理與應(yīng)用設(shè)計(jì)[M]. 北京: 電子工業(yè)出版社, 2007.
[3]李洪濤.VerilogHDL與FPGA開發(fā)設(shè)計(jì)與應(yīng)用[M]. 北京: 國防工業(yè)出版社, 2013.
[4]楊偉強(qiáng). 新型時(shí)鐘芯片DS12CR887的應(yīng)用設(shè)計(jì)[J]. 電子元器件應(yīng)用, 2010(12): 35-37.
[5]LIC,ZHANGJ,YANGY.Analysisonpredictionoflong-termclockerrorofcomputertime[C]// 2010InternationalConferenceonFutureComputer,ControlandCommunication,FCCC, 2010, 2(12): 206-209.
Design of precision interval clock based on FPGA and DSP
ZHENG Hui, ZHANG Fang-yuan
(School of Information and Communication Engineering, Harbin Engineering University, Harbin 150001, China)
DS8887isahighprecisionRTCwhichhasbuilt-incrystalvibrationandlithium-ionbatteries.ThispaperintroduceddesignofusingDS887precisionclockchipbasedonFPGAandDSP.UsingFPGAcanreducedesigncycle,madehardwareimplementationeasyandimprovethestabilityofthesystem.Thisdesignmadereadtimeshort,operationsimple,systemstable.
precisionintervalclock;DSP;FPGA
2015-08-20.
中央高校基本科研費(fèi)專項(xiàng)基金(HEUCF140803).
鄭輝(1989-),女,碩士,研究方向:寬帶信號(hào)的檢測與識(shí)別.
TN972
A
1672-0946(2016)04-0458-04