多慣組脈沖輸出同步計(jì)數(shù)系統(tǒng)設(shè)計(jì)
2.2 時(shí)鐘分頻模塊設(shè)計(jì)
本系統(tǒng)采用50 MHz有源晶振,EP2C8Q208C8N內(nèi)部擁有兩個(gè)鎖相環(huán),通過(guò)倍頻使頻率達(dá)到400MHz,然后連接一個(gè)分頻模塊為狀態(tài)機(jī)提供周期為4ms的計(jì)數(shù)值鎖存信號(hào)(clk_lock)和一個(gè)狀態(tài)機(jī)跳轉(zhuǎn)觸發(fā)信號(hào)(clk_state)。
2.3 狀態(tài)機(jī)模塊設(shè)計(jì)
狀態(tài)機(jī)模塊主要包括兩個(gè)部分:數(shù)據(jù)處理部分和FIFO控制邏輯部分。
2.3.1 狀態(tài)機(jī)的數(shù)據(jù)處理部分
狀態(tài)機(jī)在計(jì)數(shù)值鎖存信號(hào)(clk_lock)上升沿到來(lái)時(shí)會(huì)鎖存計(jì)數(shù)器此刻的計(jì)數(shù)值,并在狀態(tài)機(jī)的下一個(gè)狀態(tài)將計(jì)數(shù)值存儲(chǔ)到data-new的寄存器型變量中并進(jìn)行求差運(yùn)算,接著將被減數(shù)與減數(shù)在下一個(gè)狀態(tài)進(jìn)行更新,最后將求出來(lái)的差值交給FIFO控制邏輯進(jìn)行發(fā)送。每個(gè)計(jì)數(shù)單元計(jì)數(shù)值求差的狀態(tài)機(jī)原理圖如圖3所示。本文引用地址:http://butianyuan.cn/article/189660.htm
2.3.2 狀態(tài)機(jī)的FIFO控制邏輯部分
FPGA控制邏輯的主要作用足通過(guò)其內(nèi)部的狀態(tài)機(jī)直接操作CY68013的FIFO來(lái)進(jìn)行讀寫控制。SLOE、SLRD和SLWR作為芯片的讀寫信號(hào)與使能控制信號(hào)。INPKTEND是FPGA主動(dòng)命令USB芯片向上位PC發(fā)送數(shù)據(jù)的控制端(當(dāng)FIFO上的數(shù)據(jù)小于規(guī)定大小而又要強(qiáng)制上傳給PC時(shí)使用)。FD為雙向的數(shù)據(jù)傳輸接口。FLAGA、FLAGB、FLAGC、FLAGD四個(gè)標(biāo)志位能夠指示FIFO的空滿程度,為數(shù)據(jù)的連續(xù)存取提供了可靠的保證。FPGA_ADR0和FPGA ADR1用于選擇內(nèi)部4個(gè)緩沖端點(diǎn)之一。IFCLK提供時(shí)鐘信號(hào)(僅用于同步Slave FIFOs模式)。FPGA的引腳控制這些端口,達(dá)到對(duì)USB端的存儲(chǔ)FIFO進(jìn)行操作的目的。由于異步Slave FIFOs模式的讀寫狀態(tài)簡(jiǎn)單,穩(wěn)定性好。本系統(tǒng)選擇異步方式來(lái)讀取FIFO。
實(shí)現(xiàn)異步Slave FIFO的寫操作的狀態(tài)機(jī)如圖7所示。其狀態(tài)轉(zhuǎn)移進(jìn)程如下:
IDLE:此狀態(tài)為空閑狀態(tài),什么也不做;當(dāng)寫事件發(fā)牛時(shí)(即CLK_LOCK的上升沿到來(lái)時(shí)),進(jìn)狀態(tài)1;
狀態(tài)1:使FIFOADR[1:0]指向IN FIFO(即就是選擇CY68013的四個(gè)大數(shù)據(jù)量FIFO中的一個(gè),固件程序已將此FIFO配置為寫模式),進(jìn)狀態(tài)2;
狀態(tài)2:如果FIFO滿標(biāo)志為假(即FLAGC引腳為高電平時(shí)),則進(jìn)狀態(tài)3;否則在本狀態(tài)等待;
狀態(tài)3:驅(qū)動(dòng)數(shù)據(jù)到數(shù)據(jù)線上,使SLWR有效(低電平),一個(gè)CLK_STATE后再無(wú)效(高電平),以使FIFO寫指針遞增,進(jìn)狀態(tài)4;
狀態(tài)4:如需傳輸更多的數(shù),返回狀態(tài)2,否則進(jìn)狀態(tài)IDLE。
狀態(tài)跳轉(zhuǎn)示意圖如圖4所示:
使用QuartusII對(duì)FIFO的控制邏輯進(jìn)行時(shí)序仿真如圖5所示。
2.4 FPGA整體模塊設(shè)計(jì)
FPGA整體模塊邏輯電路圖如圖6所示。
評(píng)論