色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創作
電子發燒友網>電子資料下載>電子資料>分形生成FPGA設計練習

分形生成FPGA設計練習

2023-07-06 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

Git 倉庫

注意:模糊和偽像是手機攝像頭偽像,不存在于生成的電子 VGA 信號中)

分形生成是一種流行的 FPGA 設計練習。例如,斯坦福大學在 2002 年就已將其用作實驗室作業。一定是在那個時候,我在某個交易會上看到了類似的演示,并且從那時起就渴望嘗試一下。

好吧,我最終解決了它。

花了很長時間。

動機

FPGA 業余項目增加了一個獨特的設計挑戰:它需要始終充滿樂趣。

有時,通往終點線的路變得筆直、明顯且乏味就像徒步旅行與通勤一樣,這不僅僅是以最有效的方式從 A 地到達 B 地……所以你提出了一個新的想法,讓它再次變得有趣。沖洗并重復。

概述

“樂趣因素驅動的需求管理”最終沿著這些路線發展:

  • 實時計算
  • 60 Hz 時的全高清分辨率 (1920x1080)
  • 明智地使用 FPGA:最終實現接近每個時鐘周期每個乘法器一個操作。USB 總線功率預算約為 2 瓦的 35 尺寸 Artix 上,這是每秒 180 億次乘法運算。
  • 執行動態資源分配。分形算法有些不尋常,因為所需的迭代次數因點而異。與簡單地設置固定的迭代次數相比,復雜度大大增加(一個時鐘周期內可能出現隨機數量的結果,結果是無序的)但性能也是如此。
  • 限制為 18 位乘法,因為它是 Xilinx 6/7 系列 DSP48 塊的原生寬度。為更高分辨率增加內部位寬很簡單,但資源使用量猛增。
  • (合理地)獨立于供應商。我決定使用開源“J1B”軟核 CPU,而不是 Microblaze MCS,后者會非常簡單。
  • 我決定使用我自己的簡單編譯器/匯編器“forthytwo.exe”,而不是用于 J1B 的原始“gforth”工具鏈,它在整個過程中得到了清理。
  • CPU 上對性能無關緊要的代碼的浮點數學運算。
    “因為當你凝視兔子洞時,兔子洞也在凝視你”。
    我自己的“最小”浮點數實現并沒有像 IEEE 754 那樣精致或安全,但它很小并且到目前為止做得很好。
  • 普通 UART 上的 CPU 引導加載程序(意味著沒有專有的 Xilinx JTAG)。包含的引導加載程序實現了強大的同步和高效的二進制文件上傳。
  • 沒有深奧的工具,能夠在 Windows 上運行(同樣,Linux 會更容易)。在干凈的 Windows PC 上,可以通過安裝 MinGW(開發人員設置)、Vivado 和 Verilator 來設置構建系統。有關后者,請參閱我的安裝說明。將例如 Teraterm 與引導加載程序一起使用。
  • 包含電池的項目,旨在通過刪除不需要的內容來重用(也許這更多是在微控制器方面,因為分形部分是針對特定問題的)

就緒/有效的設計模式說明

計算引擎在很大程度上依賴于有效/就緒的握手范例,該范例在整個鏈中一致使用。

在這里,它非常重要,原因很簡單:分形發生器的 200 MHz 時鐘速率小于 VGA 像素速率的兩倍。任何需要空閑時鐘周期來恢復的“次優”握手方案都會破壞體系結構。

就緒/有效組合路徑問題

在典型的處理塊中,數據通過一系列寄存器以鎖步方式移動。當通過就緒/有效接口級聯任意數量的此類塊時,“就緒”信號形成從鏈的末端到開始的組合路徑。這會使時序收斂變得困難或不可能。當考慮處理鏈末端發出“未準備好”(接受數據)信號時會發生什么時,問題就很明顯了:整個管道長度上的數據無處可去,因此整個鏈必須在一個時鐘周期。

解決方案是使用 FIFO 將鏈分成多個段(2 個插槽就足夠了)。有一個問題:我可以設計一個“優化的”FIFO,即使數據已滿,只要在同一時鐘周期內從輸出中取出一個元素,它也會接受數據。這種“優化”將準確地引入 FIFO 應該打破的組合路徑,因此它對于解耦組合鏈是無用的。換句話說,FIFO的輸入端不能組合使用輸出端的“就緒”信號。

就緒/有效流控

也許這是顯而易見的,但就緒/有效鏈中的數據流可以在任何時候停止,只需插入一個將有效和就緒信號都強制為零(未斷言)的塊即可。該塊可以是組合的并且可以取決于觀察到的數據值。該模式用于阻止計算引擎運行在監視器電子束之前太遠。

RTL實現

時鐘域

共有三個時鐘域:

  • 200 MHz 的計算引擎(大部分設計)。這可以推得更高,但會使設計更難處理。現在,沒有理由這樣做,芯片已經很熱了。
  • 像素頻率為 148.5 MHz 的 VGA 監視器信號
  • J1B CPU 在 100 MHz,因為它的關鍵路徑對于 200 MHz 操作來說太慢了。

數據流

注:圖中名稱對應Verilog實現

poYBAGOS37KAWrjCAADNRw7ub1Y165.png
?

塊“vga” 100創建 VGA 監視器時序。它的輸出之一是當前在電子束下的像素數。

像素位置經由格雷編碼通過時鐘域交叉點110進入“觸發”塊120 這里,當像素位置返回到零時,檢測到新幀的開始。這在最后一個可見像素已被發送到顯示器之后立即發生,因此前沿/VSYNC/后沿時間間隔可用于預先計算圖像數據,直到緩沖器RAM 220的容量

新幀開始的檢測觸發以下“pixScanner” 130 該塊已經從 CPU 140接收到分形坐標并使用兩對增量逐行掃描它們:第一對增量 X/Y 用于電子束向右移動(列),第二對用于向下移動(行)。使用適當的增量,圖片可以旋轉任何角度。

該塊保留一個幀計數器,CPU 140會對其進行輪詢,以在先前的幀坐標已存儲后立即開始計算下一幀坐標。

生成的像素坐標向前移動到FIFO 150 這只是為了解耦組合接受/就緒路徑。它不會提高吞吐量,因為像素掃描儀已經能夠在每個時鐘周期生成一個輸出。

“像素坐標”由分形空間中的 X 和 Y 位置以及線性像素位置形成,相當于它在 vga 塊100中的對應位置后者是必需的,因為結果需要重新排序。

像素坐標現在移動到循環分配隊列160中。其目的是為并行“julia”(分形)計算引擎180提供像素坐標如果一個計算引擎準備好接受一項新工作,該值將從隊列中刪除,否則它將右移通過插槽170并最終循環回到隊列的頭部。

當沒有數據循環時,隊列160將只接受來自 FIFO_K 150的新輸入。ready/valid 協議的使用使得此功能的實現相對簡單。

計算引擎180將迭代 Mandelbrot 集算法(“轉義時間”算法,參見維基百科:https://en.wikipedia.org/wiki/Mandelbrot_set)

使用默認設置(很容易更改),實現使用 30 個“julia”引擎180 它們中的每一個都由 12 個管道級別組成。換句話說,每個引擎一次處理多達 12 個獨立的計算。每個“julia”引擎執行三個并行乘法(xx、yy、xy),總共使用 90 個乘法器,每個周期在滿負載下執行一次運算。

由于下游 RAM 220中的緩沖空間相當有限——遠小于全幀——必須防止計算引擎180在電子束位置之前運行太遠。因此,流量控制機制190內置于計算引擎中。它根據電子束檢查每個條目的像素編號,如果它會導致 RAM 220中的循環溢出,則阻止它離開計算引擎180 如果拒絕退出,該值將繼續通過計算引擎進行虛擬迭代。時鐘域穿越110相對于實際圖像生成將像素位置延遲幾個時鐘周期,因此流量控制將始終(保守地)滯后于幾個像素。

類似于循環分發隊列160 ,結果被收集到循環收集隊列190中。如果槽200為空,它將接受來自計算引擎180的結果,否則計算引擎將繼續對結果進行虛擬迭代。

來自收集隊列190的退出數據項移動到FIFO_E 210 ,然后移動到雙端口存儲器220 這個 FIFO 不再是絕對必要的:因為雙端口 ram 220總是準備好接受數據,它可以用更便宜的寄存器代替。

雙端口存儲器220在其第二端口上由來自“vga”塊100的電子束位置索引dp-memory 實現數據到 VGA 像素時鐘域的交叉。RAM 的輸出連同 HSYNC 和 VSYNC 信號一起最終轉發到監視器輸出。

雖然圖中未顯示,但可通過連接到 CPU 的 IO 端口的寄存器訪問按鈕和 LED

“julia”計算引擎

文檔待續……請暫時參考代碼(“julia”模塊)。

運行演示

  • 獲取 CMOD A7-35 板(或修改項目)。該設計對于 15 尺寸的變體來說太大了。
  • 上傳預構建的“最終”比特流
  • CPU 運行時,這兩個按鈕將分別切換紅色和綠色 LED。
  • 使用跨接電纜將顯示器連接到 DIL48 插座

默認引出線

  • 引腳 1:紅色(照片中的紅線)
  • 引腳 2:綠色(照片中的綠線)
  • 引腳 3:藍色(照片中的藍線)
  • 引腳 4:HSYNC(照片中的黃線)
  • 引腳 5:VSYNC(照片中的橙色線)
  • pin 25 or PMOD header: common GND (照片中的黑線)

請注意:3.3 V 不符合 VGA 模擬信號的規格我從來沒有遇到過在相當多的顯示器/投影儀上直接接線的問題,但請務必使用常識。

pYYBAGOS39CATejeAARbo3w7NuQ763.png
跳線連接到現成的 SUB-D 監視器電纜
?

?

pYYBAGOS3_iAF5k3AAdAtkNQEpw054.png
跳線布線(不同視圖)
?

?

pYYBAGOS4CCAay3AAAfcvgbJARQ452.png
跳線布線,FPGA端
?

構建項目

請使用 Vivado 2019.2。免費的“網絡版”就足夠了。

要重建比特流,請從頂級目錄運行

  • make forthytwo:構建編譯器

然后...

...對于“引導加載程序”版本(如果您想編輯微控制器代碼)

  • 制作分形(仍然來自頂級目錄)。這將創建包含 J1B rom 內容的 main.v 文件
  • 在 fractalsProject/CMODA7_fractalDemo 中打開 Vivado 工程
  • 生成比特流
  • 上傳比特流
  • 將 teraterm 連接到串行端口。測試按鍵是否回顯“x”=> 引導加載程序正常運行
  • 通過 Teraterm 的“發送文件”功能以二進制模式發送“fractalsProject/out/main.bootBin”(!!)。請注意,“main.bootBin”是在啟用或禁用引導加載程序的情況下編譯的并不重要。
  • 正確上傳打印一個字母“1”,按鈕將點亮 LED。只有現在 VGA 信號存在

...對于“發布”版本(在 FPGA 比特流中帶有微控制器代碼)

  • 根據第一行中的說明編輯 bootloader/bootloader.txt(注釋掉第一個 BRA: 并取消注釋第二個 BRA:)
  • 從頂層:制作分形
  • 從 Vivado 構建比特流
  • 程序比特流(或寫入閃存)。一旦黃色“prog ready”LED 亮起,紅色/綠色 LED 應響應按鈕按下并且 VGA 信號存在。

Git 倉庫

  • 在這里(用于在線閱讀。請克隆頂級“forthytwo”repo 并從頂級使用“make”。

執照

請注意,J1B CPU 仍保留其原始 BSD 3-clause 許可,而我自己的文件是根據 MIT 許可發布的。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 被窝国产理论一二三影院| 伦理79电影网在线观看| 2021久久99国产熟女人妻| 日本男女动态图| 九九热久久只有精品2| 超碰免费视频caopoom9| 亚洲综合网国产精品一区| 欧美亚洲综合另类无码| 九九在线精品亚洲国产| 国产AV精品白浆一区二| 91亚洲精品福利在线播放| 亚洲m男在线中文字幕| 青青草在线 视频| 口内射精颜射极品合集| 国产精品日本欧美一区二区| 99久久久免费精品国产| 亚洲欧美日韩国产另类电影| 桃花在线观看播放| 青柠在线观看免费播放电影| 久久日韩精品无码一区| 后式大肥臀国产在线| 国产成人无码WWW免费视频在线| 99久久国产露脸精品国产吴梦梦 | 色色色999| 女人被躁到高潮嗷嗷叫免费| 久久成人免费观看草草影院| 国产人在线成免费视频| 吃春药后的女教师| z00兽200俄罗斯| 99视频免费观看| 999久久久国产精品蜜臀AV| 樱桃熟了A级毛片| 一本道色播| 亚洲在线中文无码首页| 亚洲黄色大片| 亚洲国产日韩制服在线观看 | 99热婷婷国产精品综合| 20岁αsrian男同志免费| 欲香欲色天天天综合和网| 怡红院美国分院一区二区| 一级做a爰片久久毛片苍井优|