【文章】OV7670圖像采集
題目
實(shí)現(xiàn)攝像頭OV7670的配置及完成圖像的采集。請(qǐng)讀者考慮實(shí)現(xiàn)該功能需要哪些模塊?進(jìn)行模塊劃分并給出端口定義,不需要寫(xiě)出代碼。
模塊劃分
根據(jù)需配置外設(shè)交互架構(gòu),模塊劃分如圖6-16所示:

圖6-16?初步模塊劃分
進(jìn)一步分析配置模塊及接口模塊。
1.?配置模塊
從OV7670的datasheet可知,完成某些必要寄存器的配置,OV7670才能正常工作,而配置不同的寄存器,又能夠?qū)崿F(xiàn)不同的功能。配置模塊根據(jù)配置要求產(chǎn)生讀寫(xiě)命令、數(shù)據(jù)與地址給接口模塊。配置表里包含操作碼,所有寄存器的地址以及寄存器的配置值。
下面詳細(xì)介紹配置表,以下是OV7670的部分配置表:

(1)REG_NUM表示此外設(shè)寄存器總數(shù)。
(2)配置表存放的格式為:“操作碼”+“地址”+“配置值”,比如:add_wdata = {2'b11,16'h1204},其操作碼是2’b11,地址是8’h12,配置值是8’h04。
(3)操作碼為2比特,00表示空操作;01表示只讀;10表示只寫(xiě);11表示先寫(xiě)后讀。
(4)配置模塊讀取配置表,根據(jù)操作碼來(lái)發(fā)送命令給接口模塊。如果操作碼為00,則跳過(guò)此命令;如果操作碼為01,則產(chǎn)生一個(gè)讀命令給接口模塊,讀地址是配置表給出的地址;如果操作碼為10,則產(chǎn)生一個(gè)寫(xiě)命令給接口模塊,寫(xiě)地址和寫(xiě)數(shù)據(jù)由配置表給出;如果操作碼為11,則先給寫(xiě)命令,寫(xiě)地址和寫(xiě)數(shù)據(jù)由配置表給出,執(zhí)行完后,再給讀命令,讀地址與本次操作的寫(xiě)地址相同。
采用需配置外設(shè)交互架構(gòu),在配置具有多功能的外設(shè)的寄存器時(shí),能夠很方便地進(jìn)行調(diào)試,僅需通過(guò)修改配置表就可以實(shí)現(xiàn),所以明德?lián)P強(qiáng)烈推薦此類外設(shè)使用該構(gòu)架。調(diào)試過(guò)程一般是確認(rèn)讀操作,看能否讀1個(gè)寄存器數(shù)據(jù),從而確保讀操作沒(méi)問(wèn)題;然后寫(xiě)1個(gè)寄存器再讀出來(lái),確認(rèn)讀出來(lái)的數(shù)據(jù)是不是寫(xiě)進(jìn)去的數(shù)據(jù),從而確保讀寫(xiě)操作沒(méi)問(wèn)題;之后連續(xù)依次讀寫(xiě)一組寄存器,確保每次讀寫(xiě)都正確;最后把讀功能取消,只保留寫(xiě)功能,作為最后的代碼。
2.?接口模塊
接口模塊需要完成兩個(gè)功能:一是完成OV7670的配置,即根據(jù)配置模塊的讀寫(xiě)命令及數(shù)據(jù)產(chǎn)生SCCB操作時(shí)序(查閱OV7670的datasheet,OV7670的配置接口是SCCB);二是完成OV7670的圖像采集。所以模塊劃分原則一,一個(gè)功能一個(gè)模塊,接口模塊可以劃分為SCCB接口模塊與采集模塊。
綜上,模塊劃分結(jié)果如圖6-18。

圖6-18?模塊劃分框圖
模塊的端口及模塊之間數(shù)據(jù)流向
模塊劃分好后,需要進(jìn)一步確認(rèn)模塊的端口及模塊之間的數(shù)據(jù)流向。可參考5.1.2?模塊劃分端口規(guī)范。模塊劃分最終結(jié)果如圖6-19所示:

圖6-19?模塊劃分最終框圖
更多FPGA技術(shù)資訊:明德?lián)P科教
了解>>至簡(jiǎn)設(shè)計(jì)法