本設計致力于用SystemC語言建立JESD024B的協議標準模型,描述JESD204B的所有行為,并且能夠保證用戶可以通過該JESD204B的SystemC庫,進行JESD204B行為的仿真和RTL代碼的編寫。
設計以最新的版本JESD204B.01(July 2011)為參考,設計根據數據流的傳輸分為傳輸層、數據鏈路層、物理成進行代碼的編寫,其中JESD204B的模擬特性在本設計中因為無法實現,所以并沒有做過多的描述,具體的模擬的細節可以參考有JEDEC發布的標準協議。
JESD204和JESD204B修訂版數據轉換器串行接口標準由JEDEC委員會制定,旨在標準化并減少高速數據轉換器與FPGA(現場可編程門陣列)等其它器件之間的數據輸入/輸出數目。更少的互連可簡化布局布線,并支持實現更小尺寸的解決方案,同時不影響整體系統性能。這些特性對于克服許多高速ADC應用的系統尺寸和成本限制非常重要,包括無線基礎設施(GSM、EDGE、W-CDMA、LTE、CDMA2000、WiMAX、TD-SCDMA)、收發器架構、軟件定義無線電、便攜式儀器儀表、醫療超聲設備、雷達和安全通信等軍用/航空應用。
文檔將分別介紹系統的時鐘、數據傳輸層、數據鏈路層、Deterministic Latency,系統的時鐘包括系統中時鐘的管理和生成,數據傳輸層主要完成系統中AD采樣數據的映射和組幀,數據鏈路層主要完成數據流的傳輸、加擾、編碼、同步、糾錯,Deterministic Latency作為JESD204B的一個新加入的功能,主要設定系統中中發送器與接收器之間的數據傳輸的延遲,并保證傳輸的延遲是固定的。
文檔在介紹各個大模塊的基礎上,將進一步介紹協議中定義的每一個模塊的設計標準,需要注意的問題細節,并在每章的最后介紹該模塊在SystemC中的設計和仿真情況。
注意:為了保證文檔意思的正確無誤的表達,所有的專用名詞,將用原有的英文表示。
2、CLK
JESD204B內部包含豐富的時鐘資源,在一個JESD的系統中,所有的器件將共用一個(source)時鐘源,這個時鐘可以稱為源時鐘。經過源時鐘,將產生具體的器件需要的時鐘,根據系統的結構不同,所需要的時鐘也不同。ADC/DAC的輸入時鐘稱為轉換器時鐘(converter device clock),FPGA的輸入時鐘稱為數字邏輯器件時鐘(logic device clock)。
Logic device clk是FPGA的輸入參考時鐘,FPGA將通過Logic device clk生成所需要frame clock、multiframe clock、character clock、sample clcok、bit clock,以上的時鐘將在后面進行具體的介紹。
Converter device clock是ADC/DAC的輸入參數時鐘,同理,ADC/DAC上的所有時鐘都由converter device clock時鐘衍生而來,衍生的意思指其他的時鐘可以由converter clock 通過PLL生成,也可以是converterclock只作為生成其他的時鐘的參考或者邊沿對齊標志,在本次的設計中,ADC/DAC上的所有時鐘由converter device clock倍頻或者分頻得到,并且他們的相位對齊。
圖1:時鐘拓撲接口圖
如圖1所示,系統的時鐘管理包括兩個部分:clock distribution device 模塊,apllication clcok generators模塊。
clock distribution device 模塊為時鐘源控制模塊,該模塊生成系統中所有的器件需要的時鐘,并且包括SYSREF信號,SYSREF是系統中發送器件與接收器件的同步信號。該模塊生成接收器和發送器所需要的device clock,在JESD204A中,接收器和發送器的devcie clock必須保持一致,而在JESD204B中,各自的device clock可以是不一致,但是建議各個器件的devcie clock的頻率保持整數倍的關系。
2.1 Device clock
Device clock 是所有接收器和發送器的所有時鐘來源,每一個發送與接收器都需要一個Device clock,不同器件間的Device clock必須由唯一的Source clock生成。Device clock 可能與frame clock、multiframe clock 的頻率不同。但是frame clock、multiframe clock須由Device clock 衍生而成,也可以理解為device clock 是各個器件的PLL的參考時鐘。
根據Device clock與frame clock、multiframe clock的關系,JESD204B的時鐘模式可以分為以下3類:
Subclass0: 該時鐘類是為向JESD204A保持兼容。
Subclass1: Multiframe clock的時鐘周期必須是device clock的整數倍,主要的特點是用SYSREF完成不同器件的時鐘同步。
Subclass2: Device clock 生成frame clock、multiframe clock,同時Tx Device clock 必須是RX device clock的整數倍,或者RX device clock 是Tx Device clock的整數倍,在該時鐘類下,接收器與發送器的同步通過SYNC信號,并且通過發送控制信號完成發送或者接收器中的時鐘調整。
2.2 Frame clock 、Local Multiframe clock
Frame clock 是應用層和JESD204的鏈路層橋梁。
在鏈路層中,數據會先被組合成幀,多個單幀又會組成復幀(multiframe),multiframe 必須與LMFC(Local Multiframe clock)對齊。
每個發送與接收器有獨立的device clock,并且frame Frame clock 、Local Multiframe clock由device clock派生。frame Frame clock 、Local Multiframe clock 可以直接由device clock生成,也可以由device clock 來同步,派生出frame Frame clock 、Local Multiframe clock。
如果Multiframe clock由device提供,在Subcalss 1中LMFC的起始相位由SYSREF決定。在Subcalss2中,由SYNC的上升沿決定。
Frameclock 、LocalMultiframe clock的要求如下:
l 所有的發送與接收器Frame clock的周期必須一致。
l 所有的發送與接收器的Multiframe clock的周期必須保持一致。
l 在JESD204系統中所有的Frame clock 、Local Multiframe clock必須來自同一個時鐘源。
l 在每個device中,frame clock與LMFC必須保持對齊
l 在Subclass 1中,當SYSREF為高電平時,Frame clock 、Local Multiframe clock的上升沿與device clock第一個上升沿對齊。
l 在Subclass 2中,Frame clock 、Local Multiframe clock與SYNC的上升沿對齊。
l Device可以允許LFMC的相位可以小范圍的調整,這樣可以保證系統中所有的devices更好的對齊,這個功能主要針對于subclass2,通過LFMC的相位,可以保證發送器與接收器的LFMC對齊。
如果一個device支持多個JESD204,上述要求是獨立的。
2.3 SYNC
SYNC的接口是接收器給發送器的一個反饋,SYNC必須與RXdevice內部的frame clock同步。同時,強烈建議TX frame與SYNC也保持同步(在Subclass 0和Subclass 2有要求)。強烈建議SYNC的接口與deviceclock的接口的物理特性保持一致,以獲得一致的延時。
圖2 subclass 0和subclass 2 中SYNC的時序
:是指Device clock到SYNC的延遲。
:建立時間
:保持時間。
圖2中展示了SYNC的時序圖,對于Subclass 0和Subclass2 是必須的,Subclass 0是為了保持與JESD204A的兼容性,而在Subclass 2 中用于解決發送與接收的延遲的問題。
當device的devices clock快于或者等于frame clock是,device clock 將用于對齊SNYC,而當deivice clock 慢于frame clock時,SYNC將由frame clock抓取。
圖3 Subclass 0和Subclass 2 中device clock中時鐘邊沿的關系
圖3中展示的兩種不同情況下,各個時鐘邊沿的關系,在第一種情況下,frameclock的時鐘慢于deviceclock,第二種情況剛好相反。
2.4 SYSREF signal(Device Subclass 1)
在Subclass1中,SYSREF信號將實現發送器與接收器之間有固定的數據延遲,SYSREF的目的是用來確定用哪個一個device的的上升沿來對齊LMFC和frame clock的相位。因為LMFC和frame clock通常會與character clock對齊,所以在調整LMFC和frame clock時,character clock的相位也需要同時的調節。
SYSREF可以是一個周期信號,或者脈沖的周期信號,也可以是單脈沖信號,只有在器件請求同步是,才產生SYSREF信號,高電平有效,一般是通過deviceclock的上升沿抓取,但也可以通過下降沿抓取。
對于周期的SYSREF來說,他的頻率必須是LMFC的整數倍,LMFC和frame clock將與抓到SYSREF信號的device clock的上升沿對齊,周期的SYSREF信號除了對齊器件的時鐘外,也可以通過檢測各個時鐘是否與SYSREF時鐘對齊來時鐘是否發生偏移。
圖4:SYSREF對齊示意圖
對于整個系統來說,
對于系統的同步最需要考慮的是系統的延遲,由于分布延遲的不確定性,會導致很多的問題,而本次設計搭建的是純數字的不同的device不一定必須共用一個SYSREF,但是必須保證不同的SYSREF信號之間有固定的關系。邏輯系統,所以不考慮上述的問題。
對于系統的延遲主要包括:Interconnect skew、Intra-device skew、Inter-device skew、
Clock distribution skew、SYSREF distribution skew、SYNC~ distribution skewInter-device 、SYNC~ generation skew詳見JESD204B的spec。
2.5 SystemC 中的時鐘模型設計
在模型的設計中,系統的主要包含兩個時鐘模塊,Clock_distribution_device 模塊, jesd204clk_generator模塊,以及SYNC_signal_encoder和SYNC_signal_decoder模塊。
2.5.1 SYNC signal encoder and decoder
該模塊工作與frameclock時鐘域下。
在SystemC模型中,SYNC_signal_encoder在接收器中,該模塊接收系統中的SYNC請求,并生成SYNC信號。具體的流程如下:
? 系統復位后,SYNC信號的初始值為0,即SYNC復位后將直接生效。
? RX_link控制器運行后,狀態機運行生成gen_SYSREF_req信號,gen_SYSREF_req也可以是由系統傳輸發送錯誤引起,也可以由其他情況觸發。
? 在Subclass 0中,SYNC將延遲gen_SYSREF_req一拍輸出。
? 在Subclass1、2中,SYNC信號在gen_SYSREF_req下降沿是后有效,在gen_SYSREF_req的上升沿后的第一個multiframeclock的上升沿后SYNC將被置1,無效。
在SystemC模型中,SYNC_signal_decoder在發送器中,該模塊在接收系統中的SYNC請求,并將不同器件的SYNC信號組合到一起,實現SYNC的解碼。具體的流程如下:
? 將多個器件的SYNC相與輸出
? SYNC~有效4個frame clock時鐘后,認為系統重新同步請求有效
SYNC~有效的持續時間小于4個frame clock,認為接收器接收發生非致命錯誤。
2.5.2 jesd204clk_generator
該模塊生成系統所需要的6個時鐘,multiframe_clock、frame_clock、sample_clcok、character_clcok、bit_clock、sample_clcok、conversion_clcok。上訴的所有時鐘由device clock生成,并與其對齊。
在subclass 1中,multiframe_clock、frame_clock、character_clcok會與采樣到SYSREF高電平的deviceclock的上升沿對齊。
在subclass 2中會multiframe_clock、frame_clock、character_clcok會做相應的調整。]
?
圖6:系統時鐘的關系圖
如上圖所示為各個時鐘的對應關系,上面的系數的解釋如下表:
?
最終的模型仿真如下:
圖7:系統時鐘時序仿真圖
系統中,frame_clcok、multiframeclock、character clcok、sample clcok將根據輸入的對應參數生成不同頻率關系的時鐘,并且frame_clcok、multiframeclock、character clcok的時鐘相位可以調整。
SYSREF_req由低拉高后,系統分別生成了FPGA的SYSREF_clock以及converter 的SYSREF_clcok,并且在兩個信號的高電平期間,他們的device clock的上升沿對齊。而同時,frameclock、multiframe clock、character clock將從新對齊于device clock的上升沿,具體的如下圖所示:
圖8:SYSREF信號同步示意圖
在模型的設計中,SYNC的模型包括兩個部分:SYNC_signal_encoder、SYNC_signal_decoder。
2.5.3Clock_distribution_device
該模塊負責生產device clock和SYSREF信號,device clock 由source clock通過PLL生成,并且頻率和相位在系統運行的過程中不需要做調整,而SYSREF的信號形式可以多樣化,可以是周期的方波、周期的脈沖波、單脈沖信號,本次的模型中采用的單脈沖的信號。具體的實現過程遵循以下幾點:
? 不同的device有自己獨立的SYSREF信號,可以分為converter SYSREF和logic SYSREF。
? gen_SYSREF_req信號是生成SYSREF的請求信號,該信號在系統復位或者系統要求從新同步時會有效,信號在SYNC低電平持續4個frame clock周期后拉高,并在SYNC信號由低電平變為高電平后拉低。
? gen_SYSREF_req為上升沿有效,在module抓取到gen_SYSREF_req信號上升沿后,SYSREF信號將在logic device clock和converter device clock的第一個對齊的上升沿后輸出高電平,以實現不同器件間的同步。
? 在SYSREF信號的高電平有效,并持續一個device clock的時鐘周期,根據器件的device clock的周期不同,SYSREF信號的高電平持續時間也會不同。
? 在SYSREF信號為高電平時,各個器件將復位各個時鐘的frame clock、multiframe clock、character clock,以保證各個器件的時鐘邊沿對齊,具體的仿真如9所示。
圖9:SYSREF信號同步仿真圖
評論