基于VHDL/CPLD的I2C串行總線(xiàn)控制器設計及實(shí)現
I2C接口用于I2C總線(xiàn)的驅動(dòng)和接收,當I2C總線(xiàn)控制器為主機時(shí),I2C接口必須按I2C總線(xiàn)規范驅動(dòng)總線(xiàn);當總線(xiàn)控制器為從機時(shí),I2C必須能正確接收滿(mǎn)足I2C總線(xiàn)規范的信號。I2C設計規范對總線(xiàn)的時(shí)序作了詳細的定義,在不同模式下這些參數的具體數值都有明確的規定?!癝CL/START/STOP 產(chǎn)生”狀態(tài)機的狀態(tài)轉換如圖4所示, I2C接口主狀態(tài)機的轉移圖如圖5所示。
4 仿真與硬件實(shí)現
本文中仿真工具采用Mentor公司的ModelSim Plus 6.0 SE,其顯著(zhù)的優(yōu)越性能是提供了一個(gè)混合語(yǔ)言仿真環(huán)境,已在產(chǎn)業(yè)界廣泛應用。為了測試驗證系統的功能,本文采用了Atemel公司提供的采用I2C總線(xiàn)協(xié)議的AT24C02 E2PROM芯片(256B 8bit)的VerilogHDL仿真模型(AT24C02.v)作為從器件對象,用VerilogHDL語(yǔ)言構建了testbench(測試向量),對所設計I2C總線(xiàn)控制器進(jìn)行仿真。
圖6和圖7為μC通過(guò)I2C總線(xiàn)控制器對E2PROM進(jìn)行數據寫(xiě)/讀的仿真波形(將數據FFH~0HH寫(xiě)進(jìn)地址0~255單元,然后將它們再按順序讀的模式讀出)。往E2PROM寫(xiě)入時(shí)需要給出所寫(xiě)起始單元的地址(圖6中為00H); 從E2PROM順序讀時(shí)不用給出起始單元地址而從當前地址處開(kāi)始讀(本文中寫(xiě)完256B數據后,地址指針又回到0處)。相關(guān)狀態(tài)及數據已在圖中作了標示。由此可見(jiàn),所設計的總線(xiàn)控制器完全符合標準I2C串行協(xié)議的時(shí)序要求。
本文設計的系統實(shí)現平臺采用Xilinx公司的XC95216-10-PQ160 CPLD芯片,總邏輯門(mén)個(gè)數為4 800。經(jīng)綜合、適配、布局布線(xiàn)后占用器件資源的情況為:宏單元120/216(56%)、寄存器111/216(52%)、功能塊331/432(77%)、乘積項分配器544/1080(51%)??梢?jiàn),系統占用約一半的資源,相當精簡(jiǎn)。整個(gè)系統下載到CPLD后在2MHz時(shí)鐘頻率下運行正常。
評論