<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      前言

      春意已起,卻乍暖還寒。
      三四月的交接,是冷與暖的擁別。

      說明

      • 如今,以ChatGPT為代表的的人工智能驅動的語言處理系統已經火爆全網,開始滲透進日常生活;各種AI圖像生成工具也大行其道,精美的生成圖比肩專業的設計師。這些AI應用的廣泛而快速的普及,是真的能夠替代一些人的職位,導致失業。不過,AI的發展離不開底層電路的支持,尤其是CPU、GPU等這些提供算力的基本器件。而我,就是做嵌入式開發的。
      • 學習單片機,需要和硬件底層打交道。長久的使用單片機,也會潛移默化的導致從底層看待這個世界。但單純的從程序上配置寄存器來操縱單片機,或是從單片機上拉幾根線來被單片機操控,總歸是無法真正認識和理解單片機乃至CPU的運行機制的。
      • 大學里面很多理工科都會有單片機或是CPU運行機制相關的課程,也會有數電模電這些課程,是會詳細講解單片機運行機制的,很多科班出身的人本科就能手寫CPU整個流程。但是對于我這種半路出家的半吊子,只有在舊書攤上買過幾本別人的二手書,總歸不是完整的理解過單片機和CPU的運行機制的。但畢竟是做這份工作的,所以看到芯片近年來被制裁的那么慘,還是有一份斗志在里面的。也是想設計一款CPU,然后設計一門可編譯可腳本運行的編程語言,并用此語言在此CPU上編寫一份操作系統,至少要支持獨立的自編譯環境、支持應用安裝卸載、支持界面環境、支持在其他系統開發、支持可拓展等幾種基本功能。
      • 雖然造輪子在一定程度上是浪費生命的,但當賦予它偉光輝的使命意義,再貼上夢想的標簽,它就變得有價值了(哈哈)!不過我更深的大興趣愛好在于AI和圖像方面,嵌入式只是我工作生活和從底層認識這個世界的手段。所以這幾個想法不知有沒有時間實現。

      簡介

      • CPU(Central Processing Unit)是一切計算機的基礎,MCU((Microcontroller Unit)是弱化版的CPU+外設的集成“電腦”。

      • 深入理解和學習CPU的運行機制的最好辦法,就是著手自己設計一款CPU。設計一款CPU,不僅要了解其硬件原理,還需要懂得編譯器原理和指令集等知識,才能從零開始實現一套完整的CPU流程。

      • 下面,從幾個方面記錄一下可以用于入門和深入理解CPU運行機制的相關資源。其他需要了解的知識請自行檢索學習,比如【基本電路知識】,【電路設計】,【編程語言】,【CPU架構】,【編譯器】等知識

      • 以下資源大部分都是網絡資源,部分為書籍資源。

      • 簡單過程如下:首先是原理入門,然后是用FPGA或是硬件電路板實現基本的CPU電路,或是軟件模擬運行一款MCU,最后就可以手搓CPU了,并在其基礎上實現指令集、編譯器等,然后進一步的實現更加復雜和完善的功能。

      數電仿真實現入門

      logiccircuit

      • CPU的核心原理是要搞懂數字電路這門課程。大學課本中的《數字電路》很難硬著頭皮看完,所以一個可視化的、可仿真的軟件對于學習數字電路是非常有幫助的。
        logiccircuit 】 是一個電子電路設計軟件,用于可視化建立電路設計和模擬電路運行。它是開源項目,由全球的愛好者和開發人員共同開發。
        它可以通過拖拽的方式,很輕松的實現邏輯門的組合和驗證。使用它,甚至可以搭建和仿真出一個完整的CPU。
        可拖拽的部分數字邏輯門如下:
        image

      一個8位二進制CPU的設計和實現】 :這是B站一位UP以此軟件為基礎,全流程講解如何實現一個8位CPU的教程。
      一個8位二進制CPU的設計和實現】:這個是愛好者根據視頻整理的文字版。

      Proteus等電路仿真軟件

      • 一些專業的電路EDA軟件帶有電路仿真功能,有豐富的器件,完善的器件特性,能夠較好的實現電路的搭建,甚至能直接轉為PCB用于繪制,比如【Proteus】
      • Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。
      • 在它上面完全可以搭建并仿真完整的CPU電路(當然,畢竟是軟件,還是有資源限制的),然后生成PCB用于布線打板,生成實物。
      • 比如【基于proteus的CPU控制器設計(微程序版)】及【基于proteus的一個硬布線CPU】等

      《我的世界》

      • 之前很火的,在《我的世界》這個游戲中,從底層搭建出一個紅石驅動CPU,還能在搭建的屏幕上玩游戲。
      • 感興趣的可以自行了解,不做推薦。

      虛擬機

      FPGA仿真或是電路搭建仿真

      仿真的目的是轉為實物,以下是轉為實物的方法。

      FPGA編寫實現

      • FPGA(Field-Programmable Gate Array)即現場可編程門陣列:它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。

      • 在FPGA上,可以重復燒寫不同的數字邏輯門電路,所以理論上,能夠在FPGA上仿真整個CPU,外加部分數字外設。

      • FPGA主流的編程語言:Verilog HDL、VHDL、SystemVerilog, 推薦使用Verilog HDL語言。

      • Verilog HDL(簡稱 Verilog )是一種硬件描述語言,用于數字電路的系統設計??蓪λ惴墶㈤T級、開關級等多種抽象設計層次進行建模。 Verilog 繼承了 C 語言的多種操作符和結構,與另一種硬件描述語言 VHDL 相比,語法不是很嚴格,代碼更加簡潔,更容易上手。Verilog 不僅定義了語法,還對語法結構都定義了清晰的仿真語義。因此,Verilog 編寫的數字模型就能夠使用 Verilog 仿真器進行驗證。

      • FPGA也是可以通過軟件模擬仿真運行的。但是還是推薦硬件測試環境。

      • 硬件可以使用開發板。比如Sipeed科技推出的【Tang】系列FPGA開發板,或是資源更豐富的ZYNQ7010/7020系列開發板。前者價格低,后者性能更豐富,是FPGA+ARM架構,可同時運行FPGA+Linux。

      • Sipeed科技推出的 【Tang】系列FPGA開發板,使用國產廠商 【高云】的系列FPGA芯片,有較高的性價比。推薦使用 【Tang Primer 20K】開發板,資源比較豐富,能夠實現較復雜的設計,廠家自帶一個MCU內核(不開源)。而且Sipeed提供了一些入門教程和例程,適合快速入門【Tang Primer 20K 教程

      • 高云提供了一款RISC-V的IP核,可以直接調用,在FPGA上跑這款單片機核,不開源:

      • 雖然IP核不開源,但是可以在很多地方找到開源的FPGA的編寫MCU的代碼和教程,比如在 Gitee的 【其他開源 -> RISC-V】欄中,有很多用FPGA實現的處理器核,可以用于深入學習和理解如何在FPGA上實現完整的MCU。

      • 比如 【tinyriscv】項目,配套有【從零開始寫RISC-V處理器】教程,經過簡單的移植和適配,就能在 20K上跑起來。

      • 不過,FPGA畢竟是可編程的,其實現的邏輯思維很大還停留在程序層面,比如基本的門電路,只需要幾個代碼就能實現,而不是硬件的理解(比如與門就是 &)。而且也不是很酷。但此類資源較多,比如【CPU自制入門】這類的書籍基本都是基于FPGA實現的。

      • 但是,FPGA仿真這一步,是設計和制造一塊CPU芯片的很重要的步驟,所以它在CPU設計領域很重要。但是一般的玩家根本不需要考慮到CPU的實際生產步驟,所以它顯得不是那么重要,所以有想深入鉆研的,一定要掌握好FPGA。

      硬件搭建實現

      • FPGA實現MCU屬于較深等級的實現,因為FPGA代碼雖然簡單,但要想堆疊出完善的硬件邏輯,還是需要花費一番功夫的,而且搭建出的東西宏觀上也只是程序的表現,與實際硬件還是有些區別的。對于不需要考慮自己流片的入門者來說,搭建實物還是很酷的。
      • 實際上,很多入門者都用硬件電路搭建CPU(一般都是MCU)。這些入門者不乏很多初中甚至小學的人才!(比如B站就有幾個小學生自制CPU的視頻,沒有觀看過,此處不做評價)。其他的很多都是用基本的門電路芯片,搭建出基本的MCU核心電路,有些還在其上面實現了復雜代碼運行(需要實現適配的編譯器),還有些跑出了較為復雜的界面環境:

        其中的第二個【74門電路自制8位CPU(原創)】,有著較為完善的C語言編譯器和操作系統以及CPU指令集,還提供了開源文件:
      • 當然,上面都是用現成的門電路芯片拼裝組合的,還可以從底層直接二極管三極管等分立元器件搭建電路,但是比較復雜和耗時,不如用完整的門電路來實現,只需要考慮芯片的電壓、功率等參數即可組裝實現。
      • 硬件搭建推薦先用上述的一些仿真環境進行仿真驗證,再進行硬件的實物實現,節省時間和金錢。當然,很多網購平臺也會有一些商家提供設計好的成套硬件電路,購買來焊接學習即可。

      指令集

      • 上述的一些教程中含有指令集的介紹和實現,這也是實現一個CPU必不可少的步驟,因為CPU運行的最終目的,就是要實現能夠執行不同的指令。
      • 指令集是適用于操作底層硬件的代碼,屬于數據二進制的語言化的代碼。因為底層硬件都是0和1組成的數字門,而操控它們只需要基本的二進制。但為了方便操作,不用去寫繁雜的二進制數據,于是將他們按照運行邏輯進行分類,整合成了各種指令。而將指令轉為二進制機器碼的過程就需要編譯器的存在了。
      • 我們常用的匯編語言,就屬于指令集操作語言,也因此,不同的CPU架構會有不同的匯編語言,甚至不同的單片機的匯編語言都不同。
      • 當然,這一部分也可以單獨學習【從零開始制作自己的指令集架構

      編譯器

      • 不論哪種語言,最終轉換為機器碼來運行前,都需要編譯器。將指令集轉為機器碼的過程也需要編譯器的存在。
      • 匯編的編譯器較為簡單,就是將指令集轉為二進制機器碼;而高級語言的編譯器,則有更加豐富和完善的編譯條件,但為了方便兼容不同的CPU,一般都先編譯為對應CPU架構下的指令集語言,再由指令集編譯為二進制機器碼。編譯出更加優秀完善和簡短的指令集意味著編譯器更加優秀。
      • 這一部分的資源感興趣的可以自行了解學習。

      總結

      以上是對于探索CPU運行流程并自己手動實現CPU的一些資料。大多數都是實現的8位甚至更低bit位的MCU。但目前來說,基本原理都是一致的,對于入門了解和個人設計,完全足夠;更高位的CPU,需要團隊配合才能實現,靠個人是很難實現的。
      實際上,要想實現一個8位甚至更低位的完整的、帶編譯器甚至帶操作系統的CPU,都不是一件簡單的事,需要大量的知識積累和時間花費。雖然道阻且長,行則將至,但是也要考慮個人的人生長度,切莫隨意造輪子,浪費沒有收獲的時間。

      目前我也算是剛入門,也沒有足夠的時間去實現,對于設計一款CPU,設計一款編程語言,在CPU上用編程語言實現一款操作系統,這幾個系列想法,雖然現在能力上可以開始準備了,但也不知能不能實現。

      • 本文水平有限,內容很多詞語由于知識水平問題不嚴謹或很離譜,但主要作為記錄作用,希望以后的自己和路過的大神對必要的錯誤提出批評與指點,對可笑的錯誤請指出來,我會改正的。

      • 另外,轉載使用請注明作者和出處,不要刪除文檔中的關于作者的注釋。

      隨夢,隨心,隨愿,恒執念,為夢執戰,執戰蒼天! ------------------執念執戰

      posted on 2023-03-30 18:12  執念執戰  閱讀(1053)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产日韩精品欧美一区灰 | 久草国产视频| 亚洲 丝袜 另类 校园 欧美| 日韩精品三区二区三区| 亚洲国产成人资源在线| 日韩av一区二区精品不卡| 人妻换着玩又刺激又爽| 久久亚洲国产精品久久| 老湿机69福利区无码| 国产成人免费ā片在线观看| 亚洲va久久久噜噜噜久久狠狠| 欧美成人精品手机在线| 国产丰满乱子伦无码专区| av中文字幕国产精品| 国产精品十八禁一区二区| 亚洲码亚洲码天堂码三区| 国产av剧情md精品麻豆| 亚洲综合av男人的天堂| 在线涩涩免费观看国产精品| 国产精品毛片无遮挡高清| 亚洲一区二区三区啪啪| 国产成熟女人性满足视频| 人成午夜大片免费视频77777| 亚洲综合无码明星蕉在线视频 | 人妻少妇精品视频三区二区| 么公的好大好硬好深好爽视频| 久久一日本道色综合久久| 久久亚洲国产精品久久| 国产亚洲精品日韩av在| 亚洲午夜av一区二区| 九九热在线精品视频首页| 国产无遮挡又黄又爽又色| 国产午夜精品理论大片| 国产欧美一区二区日本加勒比 | 国产av激情无码久久| 国产精品久久久国产盗摄| 亚洲精品国产一区二区三区在线观看| 成人午夜在线观看刺激| 中文字幕久区久久中文字幕| 亚洲国产成人av毛片大全| 国产亚洲精品久久久久婷婷图片|