基于Verilog的FPGA與USB 2.0高速接口設(shè)計(jì)
2.2 FPGA控制程序設(shè)計(jì)
CY7C68013A提供的端口FIFO的讀寫(xiě)操作,與普通FIFO讀寫(xiě)操作方式一樣。CY7C68013A為每個(gè)端口提供了“空”標(biāo)志、“滿”標(biāo)志和“ 可編程級(jí)”標(biāo)志。FPGA檢測(cè)這些信號(hào),用于控制讀寫(xiě)的過(guò)程。FPGA在完成這些端口FIFO的操作時(shí),采用Verilog HDL硬件描述語(yǔ)言實(shí)現(xiàn)了FIFO的讀寫(xiě)時(shí)序,并在ALTERA公司提供的QuartusⅡ8.O開(kāi)發(fā)工具中綜合編譯并映射到FPGA中運(yùn)行。
2.2.1 從屬FIFO異步“讀”操作
實(shí)現(xiàn)異步從屬FIFO“讀”的狀態(tài)機(jī)如圖3所示。其狀態(tài)轉(zhuǎn)移進(jìn)程如下:
IDLE:當(dāng)“寫(xiě)”事件發(fā)生時(shí),轉(zhuǎn)到狀態(tài)1。
狀態(tài)1:指向OUT FIFO,激活FIFOADR[1:O],轉(zhuǎn)向狀態(tài)2。
狀態(tài)2:激活SLOE,如果FIFO空標(biāo)志為“假”(FIFO不空),則轉(zhuǎn)向狀態(tài)3;否則停留在狀態(tài)2。
狀態(tài)3:激活SLOE,SLRD,傳送總線采樣數(shù)據(jù);撤銷激活SLRD(指針加1)和SLOE,轉(zhuǎn)向狀態(tài)4。
狀態(tài)4:如果有更多的數(shù)據(jù)要求,則轉(zhuǎn)向狀態(tài)2;否則轉(zhuǎn)向IDLE。
實(shí)現(xiàn)以上狀態(tài)機(jī)的仿真波形如圖4所示。
2.2.2 從屬FIFO異步“寫(xiě)”操作
實(shí)現(xiàn)異步從屬FIFO“寫(xiě)”的狀態(tài)機(jī)如圖5所示。其狀態(tài)轉(zhuǎn)移進(jìn)程如下:
評(píng)論