|
題目
實(shí)現(xiàn)攝像頭OV7670的配置及完成圖像的采集。請(qǐng)讀者考慮實(shí)現(xiàn)該功能需要哪些模塊?進(jìn)行模塊劃分并給出端口定義,不需要寫出代碼。
模塊劃分
根據(jù)需配置外設(shè)交互架構(gòu),模塊劃分如圖6-16所示:
fpga培訓(xùn)
圖6-16 初步模塊劃分
進(jìn)一步分析配置模塊及接口模塊。
1. 配置模塊
從OV7670的datasheet可知,完成某些必要寄存器的配置,OV7670才能正常工作,而配置不同的寄存器,又能夠?qū)崿F(xiàn)不同的功能。配置模塊根據(jù)配置要求產(chǎn)生讀寫命令、數(shù)據(jù)與地址給接口模塊。配置表里包含操作碼,所有寄存器的地址以及寄存器的配置值。
下面詳細(xì)介紹配置表,以下是OV7670的部分配置表:
明德?lián)P科教
(1)REG_NUM表示此外設(shè)寄存器總數(shù)。
(2)配置表存放的格式為:“操作碼”+“地址”+“配置值”,比如:add_wdata = {2'b11,16'h1204},其操作碼是2’b11,地址是8’h12,配置值是8’h04。
(3)操作碼為2比特,00表示空操作;01表示只讀;10表示只寫;11表示先寫后讀。
(4)配置模塊讀取配置表,根據(jù)操作碼來發(fā)送命令給接口模塊。如果操作碼為00,則跳過此命令;如果操作碼為01,則產(chǎn)生一個(gè)讀命令給接口模塊,讀地址是配置表給出的地址;如果操作碼為10,則產(chǎn)生一個(gè)寫命令給接口模塊,寫地址和寫數(shù)據(jù)由配置表給出;如果操作碼為11,則先給寫命令,寫地址和寫數(shù)據(jù)由配置表給出,執(zhí)行完后,再給讀命令,讀地址與本次操作的寫地址相同。
采用需配置外設(shè)交互架構(gòu),在配置具有多功能的外設(shè)的寄存器時(shí),能夠很方便地進(jìn)行調(diào)試,僅需通過修改配置表就可以實(shí)現(xiàn),所以明德?lián)P強(qiáng)烈推薦此類外設(shè)使用該構(gòu)架。調(diào)試過程一般是確認(rèn)讀操作,看能否讀1個(gè)寄存器數(shù)據(jù),從而確保讀操作沒問題;然后寫1個(gè)寄存器再讀出來,確認(rèn)讀出來的數(shù)據(jù)是不是寫進(jìn)去的數(shù)據(jù),從而確保讀寫操作沒問題;之后連續(xù)依次讀寫一組寄存器,確保每次讀寫都正確;最后把讀功能取消,只保留寫功能,作為最后的代碼。
2. 接口模塊
接口模塊需要完成兩個(gè)功能:一是完成OV7670的配置,即根據(jù)配置模塊的讀寫命令及數(shù)據(jù)產(chǎn)生SCCB操作時(shí)序(查閱OV7670的datasheet,OV7670的配置接口是SCCB);二是完成OV7670的圖像采集。所以模塊劃分原則一,一個(gè)功能一個(gè)模塊,接口模塊可以劃分為SCCB接口模塊與采集模塊。
綜上,模塊劃分結(jié)果如圖6-18。
fpga設(shè)計(jì)
圖6-18 模塊劃分框圖
模塊的端口及模塊之間數(shù)據(jù)流向
模塊劃分好后,需要進(jìn)一步確認(rèn)模塊的端口及模塊之間的數(shù)據(jù)流向。可參考5.1.2 模塊劃分端口規(guī)范。模塊劃分最終結(jié)果如圖6-19所示:
至簡(jiǎn)設(shè)計(jì)法
圖6-19 模塊劃分最終框圖
技術(shù)交流QQ群:544453837
更多FPGA技術(shù)資訊:明德?lián)P科教
了解>>至簡(jiǎn)設(shè)計(jì)法 |
|