Logisim的使用


准備

通過Logisim的官網下載適合你機器的Logisim的軟件,啟動Logisim應用程序(Logisim可能有點bug,如果程序運行詭異,可能內部已經奔潰,最好的解決方法是重新啟動它)。

Logisim 高階使用

先介紹兩個有用的Logisim的功能,對后續實驗會很有幫助。

Tunnel

Tunnel允許你繪制“隱形線”將兩個點綁定在一起。Tunnel根據分配給線的標簽來分組,這寫標簽是區分大小寫的,他們用於連接線,如圖所示:

 

要小心電線通過Tunnel與哪些電線相連,反過來也可以,如圖:

Splitter

顧名思義,就是分離器,將n位輸入,分成m組輸出(組數和每組成員都是可以調節的)。其實它也能夠反過來用,即將n位輸入合成一個n位的輸出。

下面這個,就是將一個16位數,整體循環右移兩位。

Extenders 擴展器

在更改連線寬度時,為了清晰起見,應使用Bit extender 位擴展器。

例如考慮將8位擴展成16位,一種做法是利用Splitter,將原數與00000000合並,如圖

下面有一種更簡便的做法,更易於閱讀,並且不容易出錯

在考慮丟棄比特位情況下,它可以做着“相反”的工作

實驗

要求:根據你對Splitter和多路復用器的知識和經驗,你可以實現一個非平凡的組合邏輯塊:rotr,代表“向右循環“,rotr A,B表示將輸入A的位模式”向右循環“B位。

例如,A為0bc110101,B為ob0101(即十進制5),則該電路塊的輸出為ob110101110101,請注意,最右邊的5位從值的右端循環到左端。

在RTL中,該操作類似於"R = A >> B || A << (16 - B)"。

允許使用 除Shift位移器以外 的任何組合邏輯電路,在main的子電路中使用你的rotr子電路。

提示一:在開始接線之前,你應該仔細考慮如何將此問題分解為較小的問題並將它們連接在 一起。在實現 rotr 時,可以隨意使用其他子電路。如果你不這樣做,等着后悔吧。

提示二:雖然我們給你了 rotr 的 RTL 表示,但這並不意味着它是看待這個問題的最佳方式。 想想 B 的輸入位並考慮如何有效地使用 splitter! 

提示三::如果使用一個大的 splitter 接線會很混亂,有時可以將多個 splitter 串起來,事情會 更加局部化和整潔。例如,將 1 個輸入分離成 16 個輸出可以用一個 splitter 分出 4 個分支, 每個分支分別到一個有四個分支的 splitter。

思路

首先分別制作循環右移1位、2位、4位、8位的子電路(記得考慮子電路復用),其中右移1位可以用Splitter分離出16位,然后錯一位連接再用Splitter合並。

將B的4位分離出來,分別作4個2-to-1-MUX的使能端。

my lab 這個我寫的,有錯誤歡迎指出,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM