HDLBits (80) — 使用多路復(fù)用器實(shí)現(xiàn)的卡諾圖
本題鏈接:
https://hdlbits.01xz.net/wiki/Exams/ece241_2014_q3
對(duì)于下面的卡諾圖,要求只使用一個(gè)4至1多路復(fù)用器和多個(gè)的2至1多路復(fù)用器的電路來(lái)實(shí)現(xiàn),但是盡可能少使用多路復(fù)用器。必須使用a和b作為多路復(fù)用器選擇器輸入,此外不允許使用任何其他邏輯門,如下面的4對(duì)1多路復(fù)用器所示。
您只要實(shí)現(xiàn)了標(biāo)記為top_module的部分,這樣整個(gè)電路(包括4對(duì)1的多路復(fù)用器)就實(shí)現(xiàn)了卡諾圖。


(原題目要求只使用2對(duì)1的多路復(fù)用器,因?yàn)樵囶}還想考驗(yàn)使用卡諾圖簡(jiǎn)化邏輯函數(shù),以及如何只使用具有恒定輸入的多路復(fù)用器合成邏輯函數(shù)。如果希望將其視為純粹的Verilog練習(xí),可以忽略此約束,并隨意編寫模塊。)

題目

答案

輸出波形


在邏輯代數(shù)中,卡諾圖(Karnaugh map)是真值表的變形,它可以將有n個(gè)變量的邏輯函數(shù)的2的n次方個(gè)最小項(xiàng)組織在給定的長(zhǎng)方形表格中,同時(shí)為相鄰最小項(xiàng)(相鄰與項(xiàng))運(yùn)用鄰接律化簡(jiǎn)提供了直觀的圖形工具。但是,如果需要處理的邏輯函數(shù)的自變量較多(有五個(gè)或更多的時(shí)候,此時(shí)有些項(xiàng)就很難圈了),那么卡諾圖的行列數(shù)將迅速增加,使圖形更加復(fù)雜。
如果表達(dá)式為最小項(xiàng)表達(dá)式,則可直接填入卡諾圖
如表達(dá)式不是最小項(xiàng)表達(dá)式,但是“與—或表達(dá)式”,可將其先化成最小項(xiàng)表達(dá)式,再填入卡諾圖。也可直接填入。
合并相鄰的最小項(xiàng),即根據(jù)下述原則畫圈
盡量畫大圈,但每個(gè)圈內(nèi)只能含有2的n次方(n=0,1,2,3……)個(gè)相鄰項(xiàng)。要特別注意對(duì)邊相鄰性和四角相鄰性。
圈的個(gè)數(shù)盡量少。
卡諾圖中所有取值為1的方格均要被圈過(guò),即不能漏下取值為1的最小項(xiàng)。
在新畫的包圍圈中至少要含有1個(gè)未被圈過(guò)的1方格,否則該包圍圈是多余的。
寫出化簡(jiǎn)后的表達(dá)式。每一個(gè)圈寫一個(gè)最簡(jiǎn)與項(xiàng),規(guī)則是,取值為l的變量用原變量表示,取值為0的變量用反變量表示,將這些變量相與。然后將所有與項(xiàng)進(jìn)行邏輯加,即得最簡(jiǎn)與—或表達(dá)式。
在進(jìn)行化簡(jiǎn)時(shí),如果用圖中真值為0的項(xiàng)更方便,可以用他們來(lái)處理,方法和真值取1時(shí)一樣,只是結(jié)果要再做一次求反。
參考內(nèi)容:
卡諾圖?|?維基百科:
https://zh.m.wikipedia.org/zh-hans/%E5%8D%A1%E8%AF%BA%E5%9B%BE