李 瑞,孫顯龍,劉寶娟
(1.中國電子科技集團公司第四十七研究所,沈陽110032;2.沈陽工業大學,沈陽110178)
序列信號是由0,1組成的脈沖序列,在數字通信、雷達和遙測領域應用很廣。為了保證信息的可靠傳輸,一般需要在發送端加入固定的同步碼組,而在接收端則需要檢出該同步碼組。接收端采用的序列檢測器就是一種用來檢測一組或多組序列信號的電路。對于設計序列檢測電路來說,有傳統的經典設計方法,即根據設計要求畫出狀態圖,列出狀態轉換表,通常用這個表對狀態圖進行化簡,再從狀態轉換圖畫出電路狀態和輸出的卡諾圖,用以求出驅動方程和輸出方程,最后畫出電路。這種傳統的脈沖序列檢測器的設計方法,通過組合各種分立元件來實現各個狀態之間的轉換,不僅開發周期長,設計修改成本高,而且可移植性差。隨著通信技術的發展,對脈沖序列信號檢測的要求越來越高,傳統的設計方法已經很難滿足性能指標要求。
本設計基于現場可編程門陣列(FPGA),以Xilinx公司的Spartan-3E系列FPGA芯片XC3S100E為平臺來實現和驗證序列檢測器的功能,系統集成度高,與傳統的設計方法相比,減少了元器件的使用數量,提高了測量精度和可靠性,并利用硬件描述語言VHDL編程,優化了設計,提高了效率,具有在線可編程和易于功能擴展、升級的優點。
序列檢測器是具有能識別任意一串二值信號中某特殊碼組功能的邏輯電路。序列檢測電路在序列信號正常工作時,如果檢測到待測碼組,則電路輸出識別信號。設計序列檢測器的關鍵在于獲取正確的狀態轉移圖。為了減少錯誤檢測的概率,序列檢測器應該預置起始狀態。
本設計的序列檢測器能夠從連續收到的一組串行碼流中檢出同步碼組:1110010,同時輸出檢測結果標志信號。由此可知,序列檢測器應該有2個輸入信號和1個輸出信號。輸入信號一個是二進制串行信號xi,另一個是時鐘信號clk。輸出信號是檢測結果標志信號output,其值為高電平‘1’,表示檢測到同步碼組;其值為低電平‘0’,表示沒有檢測到同步碼組。序列檢測器電路框圖如圖1所示。

圖1 序列檢測器電路結構框圖
序列檢測器每收到一個符合要求的串行碼,就需要一個狀態進行記憶。因為電路要求檢測的同步碼組是1110010,有7位,電路需要記憶的輸入信號有1,11,111,…,1110010 等7 種,加上初始狀態,即沒有收到一個有效碼,共8種狀態。設檢測器的初始狀態為s0,s0是收到‘0’時的狀態,檢測器電路共需要8種狀態(s0~s7)。用摩爾狀態機來實現8種狀態的轉換關系,狀態轉移圖如圖2所示。圖中圓圈內為當前狀態和輸出標志信號output的取值,箭頭旁邊標的數字為輸入信號xi的取值。

圖2 序列檢測器電路狀態轉移圖
ISE(Integrated Software Environment)是Xilinx公司提供的FPGA/CPLD高性能設計開發集成環境,其界面友好,使用便捷。在ISE上可以完成輸入(Design Entry)、綜合(Synthesis)、實現(Implementation)、驗證(Verification)、下載(Download)等工程設計流程,使設計者能方便地進行設計輸入、快速處理和器件編程。本設計利用ISE 9.1i開發軟件來實現序列檢測器,下面詳細介紹設計流程。
設計輸入包括原理圖、狀態機、波形圖、硬件描述語言(HDL)等圖形或文本輸入方法,是工程設計的第一步。ISE集成的設計工具主要包括HDL編輯器(HDL Editor)、狀態機編輯器(State CAD)、原理圖編輯器(ECS)、IP核生成器(Core Generator)和測試激勵生成器(HDL Bencher)等。目前在工程設計中,常用的輸入方法是HDL文本設計輸入法,其中廣泛使用的硬件描述語言是VHDL和Verilog HDL。使用硬件描述語言的優點是利于由頂向下設計,利于模塊的劃分與復用,可移植性好,通用性強,設計不因芯片的工藝和結構的變化而變化,更利于向ASIC的移植。
在本設計中,根據狀態轉移圖可以很方便地寫出VHDL程序,本設計采用單進程的設計方法。由于是同步信號檢測,所以采用了if-then語句和clk'event and clk= '1'語句以確保在時鐘信號 clk 的上升沿檢測輸入信號;又由于檢測的是序列信號,故采用了case-when順序語句。下面是序列檢測電路的部分VHDL程序:


綜合是將行為和功能層次表達的電子系統轉化為低層次模塊的組合。一般來說,綜合是針對VHDL來說的,即將VHDL描述的模型、算法、行為和功能描述轉換為FPGA/CPLD基本結構相對應的網表文件,即構成對應的映射關系。
利用Xilinx ISE自帶的綜合工具中的XST,將VHDL語言設計輸入翻譯成由邏輯門、RAM和寄存器等基本邏輯單元組成的邏輯連接(網表),并根據目標與要求優化所形成的邏輯連接,輸出edf和edn等文件,供ISE布局布線器進行實現。
在綜合前若指定器件,應注意器件資源和設計要求相匹配。本設計的序列檢測電路僅為實際應用開發系統的部分電路,占用器件資源少,選用Spartan-3E系列FPGA芯片XC3S100E完全能滿足設計指標要求。
設計實現是根據所選芯片的型號將綜合輸出的邏輯網表適配到具體器件上。Xilinx ISE的設計實現過程一般分為轉換(Translate)、映射(Map)、布局布線(Place&Route)等3個步驟,本設計采用ISE設計工具提供的默認值來完成。
設計驗證包含綜合后仿真和功能仿真等。功能仿真就是對設計電路的邏輯功能進行模擬測試,看其是否滿足設計要求,通常是通過波形圖直觀地顯示輸入信號與輸出信號之間的關系。通過仿真能及時發現設計中的錯誤,修改設計中的錯誤,加快設計進度,提高設計可靠性。每個仿真步驟如果出現問題,就需要根據錯誤的定位返回到相應的步驟更改或者重新設計。本設計的序列檢測器時序仿真結果如圖3所示,分析此波形可知仿真結果符合設計要求。

圖3 序列檢測器仿真波形圖
編程下載是設計開發的最后步驟,利用ISE中的編程工具iMPACT,將已經仿真實現的位流文件下載到開發板上的FPGA中進行在線調試,或者將生成的配置文件寫入PROM器件中。最后,將配置好的FPGA器件,加入實際信號進行測試,以檢查是否滿足設計要求。若有錯誤,重回設計輸入階段進行改正,直到功能正確并滿足設計指標要求為止。
基于FPGA使用硬件描述語言VHDL設計序列檢測器的方法,具有減小電路板尺寸、易于集成到片上系統、縮小系統體積、方便修改等特點,具有很好的可重用性,可大大縮短設計周期,降低成本,提高設計的可靠性。在Xilinx的FPGA應用開發系統中,已經成功地利用本設計完成了多路脈沖序列信號檢測的功能。實際使用證明,本設計為序列信號檢測電路提供了一種可靠實用的方案,靈活高效且易于擴展,具有良好的應用前景。
[1] 潘松,黃繼業.EDA技術實用教程[M].北京:科學出版社,2002.
[2] 羅朝霞.基于CPLD的序列信號檢測器設計與實現[J].現代電子技術,2005(11):59-60.
[3] 徐志軍,徐光輝.CPLD/FPGA的開發與應用[M].北京:電子工業出版社,2002.