基于CPLD的異步串行通訊控制器的研究與設計
串行數(shù)據(jù)幀與接收時鐘是異步的,所以接收器功能實現(xiàn)中的關鍵是接收器時鐘與每個接收字符的同步。一個有效的方法是接收器采用高速率時鐘對串行數(shù)據(jù)進行采樣,通常采樣頻率是位時鐘頻率的整數(shù)倍,也就是選擇比較高的波特率因子。理論上倍數(shù)越高接收數(shù)據(jù)各位的分辨率越高,實際中一般最大選擇16倍。
接收器應該盡可能地在靠近每個數(shù)據(jù)位周期的中心處進行采樣。如果接收器能很好地預測起始位的開始,那么它可在起始位的下降沿到來之后,等待半個位周期再采樣數(shù)據(jù)位。此后,接收器每等待一個位周期采樣一個數(shù)據(jù)位,直至收到最后一位為止。
接收過程主要由一個3位狀態(tài)機實現(xiàn),其狀態(tài)有空閑狀態(tài)、接收起始位、接收數(shù)據(jù)位、接收奇偶校驗位以及接收停止位。每一個狀態(tài)表明了當前正在接收到數(shù)據(jù)屬于哪一種字符,并且根據(jù)當前接收字符的狀態(tài)驅(qū)動其他部件進行合適的操作。狀態(tài)轉(zhuǎn)換機的轉(zhuǎn)換圖如圖4所示。
4基于CPLD的實現(xiàn)和仿真
可編程邏輯器件(PLD)是在20世紀80年代迅速發(fā)展起來的一種新型集成電路,隨著大規(guī)模集成電路的進一步發(fā)展,出現(xiàn)了PAL和GAL邏輯器件,而復雜可編程邏輯器件CPLD是在此邏輯器件基礎上發(fā)展起來的,它是由大量邏輯宏單元構(gòu)成的。通過配置,可以將這些邏輯宏單元形成不同的硬件結(jié)構(gòu),從而構(gòu)成不同的電子系統(tǒng),完成不同的功能。正是CPLD的這種硬件重構(gòu)的靈活性,使得設計者能夠?qū)⒂糜布枋稣Z言(如VHDL或者Veritog HDL)描述的電路在CPLD中實現(xiàn)。這樣一來,同一塊CPLD能實現(xiàn)許多完全不同的電路結(jié)構(gòu)和功能。同時也大大簡化了系統(tǒng)的調(diào)試,從而能極大地縮短系統(tǒng)的研發(fā)周期。
于是我們在驗證這一環(huán)節(jié)中,采用Xilinx公司的XC9500系列的XC95108 CPLD來驗證該方案的合理性。在用VHDL語言實現(xiàn)圖2的功能時,采用自頂向下的設計方法,先設計一個TOP頂層模塊,它里面包括了接口控制電路模塊,調(diào)制解調(diào)模塊,發(fā)送模塊和接收模塊。其中接口控制電路模塊包含了圖2中的波特率控制邏輯電路,數(shù)據(jù)總線緩沖器和讀寫控制邏輯電路。設計實現(xiàn)中比較復雜的部分就是接口控制電路的實現(xiàn)。在接口控制電路模塊中,設計了接收緩沖寄存器(RBR),發(fā)送保持寄存器(THR),中斷使能寄存器(IER),中斷標識寄存器(IIR),模式選擇控制寄存器(LCR),調(diào)制解調(diào)控制寄存器(MCR),接收發(fā)送狀態(tài)寄存器(LSR),調(diào)制解調(diào)狀態(tài)寄存器(MSR),它們的存儲器映射地址分別設置為000~110,因為該設計中把控制器設計為不能同時接收和發(fā)送,所以接收緩沖寄存器(RBR)和發(fā)送保持寄存器(THR)共用一個地址。其中,模式選擇控制寄存器(LCR)用來設置,要發(fā)送數(shù)據(jù)的位數(shù)(從低到高發(fā)送),奇偶校驗位的位數(shù)和停止位的位數(shù)。
評論