網(wǎng)站查詢(xún)功能怎么做seo咨詢(xún)河北
1. 卡諾圖
邏輯函數(shù)表達(dá)式可以使用其最小項(xiàng)相加來(lái)表示,用所有的最小項(xiàng)可以轉(zhuǎn)換為卡諾圖進(jìn)行邏輯項(xiàng)化簡(jiǎn)
卡諾圖講解資料1
卡諾圖講解資料2
卡諾圖講解資料3
- 最小項(xiàng)的定義
一個(gè)函數(shù)的某個(gè)乘積項(xiàng)包含了函數(shù)的全部變量,其中每個(gè)變量都以原變量或反變量的形式出現(xiàn),且僅出現(xiàn)一次,則這個(gè)乘積項(xiàng)稱(chēng)為該函數(shù)的一個(gè)標(biāo)準(zhǔn)積項(xiàng),通常稱(chēng)為最小項(xiàng)。 - 表示方法
通常使用 m i m_i mi? 來(lái)表示最小項(xiàng);把最小項(xiàng)中原變量記為1,反變量記為0,比如 A = 1 A=1 A=1, A  ̄ = 0 \overline A=0 A=0
1.1 卡諾圖的簡(jiǎn)介
??一種描述邏輯函數(shù)的特殊方格圖方格圖中,每一個(gè)方格代表邏輯函數(shù)的一個(gè)最小項(xiàng),而且?guī)缀蜗噜?#xff08;在幾何位置上,上下或左右相鄰)的小方格具有邏輯相鄰性,即兩相鄰小方格所代表的最小項(xiàng)只有一個(gè)變量取值不同。有n個(gè)變量,其所有的最小項(xiàng)個(gè)數(shù)就有 2 n 2^n 2n 個(gè),則卡諾圖中就對(duì)應(yīng)有這么多數(shù)量的小方格,每個(gè)小方格都滿(mǎn)足相鄰項(xiàng)的要求。
根據(jù)最小項(xiàng): 確認(rèn)變量的順序,然后將卡諾圖填0/1,填寫(xiě)示例如下:
根據(jù)邏輯函數(shù)填寫(xiě)卡諾圖: m 指最小項(xiàng),m0=0000 即表示 A  ̄ B  ̄ C  ̄ D  ̄ \overline A \overline B \overline C \overline D ABCD
1.2 卡諾圖的運(yùn)算
??兩圖之間的最小項(xiàng)進(jìn)行邏輯運(yùn)算即可。乘、加、異或都類(lèi)似,卡諾圖對(duì)應(yīng)位置做邏輯運(yùn)算即可
1.3 卡諾圖的化簡(jiǎn)
??卡諾圖相鄰性的特點(diǎn)保證了幾何相鄰兩方格所代表的最小項(xiàng)只有一個(gè)變量不同。因此,若相鄰的方格都為1(簡(jiǎn)稱(chēng)1格)時(shí),則對(duì)應(yīng)的最小項(xiàng)就可以合并。合并的結(jié)果是消去這個(gè)不同的變量,只保留相同的變量。 卡諾圈只能圈偶數(shù)個(gè)1(2、4、8…),圖形兩邊也算相鄰,而且數(shù)字可以重復(fù)畫(huà)圈。畫(huà)好圈后看一個(gè)圈內(nèi)幾個(gè)變量的是否同時(shí)有 0,1的情況,如果有說(shuō)明可以消除,剩下一直為1的為正變量,一直為0的為反變量。
例題: 比如下圖中的 B是因?yàn)?個(gè)1的卡諾圈內(nèi)A,C都有取0,1的情況,因此可以消除。只有B一直為1則化簡(jiǎn)后僅剩B。
2. 有限狀態(tài)機(jī)
狀態(tài)機(jī),從細(xì)節(jié)出發(fā)(一段式、兩段式、三段式,moore型、mealy型)
檢測(cè)序列重疊和不重疊狀態(tài)的區(qū)別:最后一位的數(shù)據(jù)是否為下一組序列的起始位
如在101011檢測(cè)101,重疊檢測(cè)輸出兩次高電平,不重疊僅一次。以下列三段式為例進(jìn)行說(shuō)明
parameter S0=4'b0001;
parameter S1=4'b0010;
parameter S2=4'b0100;
parameter S3=4'b1000; //獨(dú)熱碼 定義狀態(tài)機(jī)狀態(tài)reg [3:0] state;
reg [3:0] c_state,n_state;
always@(posedge clk or negedge rst_n)beginif(rst_n==1'b0)c_state<=S0;else c_state<=n_state;
endalways@(c_state or din)begin // 狀態(tài)轉(zhuǎn)移case(c_state) S0:beginif(din==1'b1) n_state=S1;elsen_state=S0;endS1:beginif(din==1'b0)n_state=S2;elsen_state=S1;endS2:beginif(din==1'b1)n_state=S3;elsen_state=S0;endS3:begin // 不重疊檢測(cè),直接判斷輸入是不是新的1,不是則重新開(kāi)始檢測(cè)if(din==1'b1)n_state=S1;else n_state=S0;end/*S3:begin //重疊檢測(cè),以上一個(gè)輸入1做為起始判斷當(dāng)前輸入,是0則直接S2,是1則當(dāng)作起始位跳到S1if(din==1'b1)n_state=S1;elsen_state=S2;end*/default:n_state=S0;endcase endalways@(posedge clk or negedge rst_n)beginif(rst_n==1'b0)out<=1'b0;else beginif(n_state== S3) //僅依靠當(dāng)前狀態(tài)判斷進(jìn)行輸出判斷out<=1'b1;elseout<=1'b0;end
end