如下圖所示,我們利用FPGA內部的IP來規劃一個I2C的 Flash,一開始只用I2C的IP,其實在跑testbench的時候,會發現用起來限制是很多的。

目前若只論該模組的話,我也就只試了Write功能,大概就是注意幾個規則:
(1) 該IP的address只會顯示0,4,8,12,…176…,252等,每4個byte為一組的第一組address,這也是為什麼之前總是看不到這寫數字以外的address內容。然後搭配"byteenable"4個bit,來控制現在是使用該4byte的其中哪一個byte。所以他的address與data要另外用byteenable做個解碼才行。

(2)不知為何,該內容的第四組byte其實出現只有很短的一瞬間,與其他三個byte的時間是不同的,因此第一次在看的時候其實沒有發現,是放大到很後面才發現有第四個 byte的動作和內容。FAE對這件事情也沒辦法解釋,只是說還是有正常動做。

(3)上面示範了單筆寫入可以正常動做,下面則是連續寫入的一個動作,這又涉及到了另一個規則,寫入一定要從四組byte的第一組開始寫,否則連續寫入就會出現異常。下圖從address 228開始寫10筆資料,都可以正常顯示,但是一但從229開始寫,整個address與data的搭配從下一組的第一個byte就會出現異常。而且從下圖可以比較出,單筆寫入與連續寫入時的byteenable表現是不同的,所以目前前面的解碼的code只能是用於單筆寫入。連續寫入的還需要加入才會分配到正確的address與data。


















