FPGA入門到精通系列1 數位電路基礎知識

2022-10-09 08:21:11 字數 2046 閱讀 4487

本文主要介紹數位電路基礎知識,用最簡潔的內容介紹最核心的知識。

1、數位電路是什麼?

數位電路是利用電源電壓的高電平和低電平分別表示1和0,進而實現資訊的表達。模擬訊號:隨時間連續變化的訊號。處理模擬訊號的電路就是模擬電路。數碼訊號:隨時間不連續變化的訊號,離散變化。處理數碼訊號的電路就是數位電路。

2、數值表達

我們常用的數值表達方式是十進位制,但在數位電路中採用的是二進位制,如下圖所示:

有符號二進位制:

3、位元和位元組

位元:二進位制中的乙個數字位稱為 binary digit,用bit表示,常簡寫為「b」。

位元組:1位元組等於8位元,用byte表示,常簡寫為「b」。

4、1k 位元組理解的差異

k、m、g、t 是表示大資料量時常用的單位。1k 的大小有 1000(10 的 3 次方)和 1024(2 的 10 次方)兩種計數方法。

通常,衡量計算機記憶體和網路資料報大小時,1k 相當於 1024 位元。而在硬碟等儲存器的標籤上記述的尺寸或物理學中的 1k 相當於 1000。

5、反碼與補碼

反碼 = 原碼所有bit位取反

補碼 = 反碼+1

比如原碼=0101,則反碼=1010,補碼=1011

6、mosfet 的結構

目前數位電路基本上都是由 mosfet 場效電晶體構成的。mosfet 是一種在施加電壓後可以像開關一樣工作的半導體器件。mosfet 有 p 型 mosfet 和 n 型 mosfet 兩種,如下圖所示。

7、邏輯運算與基本邏輯閘電路

(1)邏輯運算使用 and(邏輯與)、or(邏輯或)、not(邏輯非)三種基本運算組合來實現各種運算。

(2)cmos 基本邏輯閘電路

8、儲存元件

鎖存器(latch)就是一種儲存元件,具有像閂鎖一樣鎖住並維持資料的特性,通過組合基本的邏輯門可以實現。

(1)最簡單的鎖存器由乙個2輸入的and門組成,將一路輸入與輸出連線形成迴路。

(2)d鎖存器(data latch,d-latch,資料鎖存器)

結構組成:由4個nand組成,輸入訊號有d(data)和e(enable),輸出訊號有q和/q。

工作邏輯:e 為 0 時保持前乙個資料,e 為 1 時將輸入 d 的資料輸出到 q。e為1時輸入的 d 直接通過 q 輸出。

d鎖存器構成以及電路組成如下:

真值表:

(3)d觸發器

d 鎖存器和 not 門組合,可以實現依據時鐘訊號同步並儲存資料的d 觸發器。

d 觸發器有 d(data) 和 c(clock) 兩個輸入訊號,q 和/q兩個輸出訊號。

d觸發器電路組合如下圖所示:

d觸發器的電路符號:

工作邏輯:當 d 觸 髮器的 c 為 0 時,前端 d 鎖存器輸出訊號 d 的值,後端 d 鎖存器保持之前的資料。當 c 為 1 時,前端 d 鎖存器保持之前的資料,後端 d 鎖存器將前端 d 鎖存器保持的資料直接通過 q 輸出。

d觸發器由於原理和構造簡單,廣泛應用於同步電路。

擴充套件知識:《建立時間與保持時間》

d觸發器是由時鐘訊號的邊沿來觸發資料的儲存動作的。因此,需要在時鐘沿前後一段時間內將輸入訊號穩定下來。如果在時鐘變化時輸入訊號也在變化,很可能無法正確儲存資料。因此,為了讓 d 觸發器正確儲存資料,需要有建立時間(setup time)和保持時間(hold time)兩個基本條件。

建立時間是在時鐘變化前必須穩定輸入訊號的時間,而保持時間是時鐘變化後必須穩定輸入訊號的時間。

同時遵守建立時間和保持時間,就可以讓 d 觸發器正確的儲存資料。具體的時序圖如下所示:

9、組合邏輯電路和時序邏輯電路

數位電路可以分為組邏輯合電路和時序邏輯電路兩種。(1)組合邏輯電路

組合邏輯電路是指輸出值僅由輸入訊號的狀態決定的電路,不依賴於過去的輸入。從電路組成上來看,只包含閘電路,不包含儲存元件。如下圖所示就是乙個組合邏輯電路。

(2)時序邏輯電路

時序邏輯電路是指輸出值同時依賴於現在和過去輸入訊號的邏輯電路。

從電路組成上來看,時序邏輯電路等於組合邏輯電路+儲存電路。

從工作邏輯上來看,輸出狀態必須反饋到輸入端,與輸入訊號共同決定組合邏輯的輸出。

FPGA從入門到精通 1 前序

畢業後,從乙個嵌入式硬體狗轉做fpga工程師,從中兜兜轉轉繞了不少彎路,為了給後人避坑,所以今天開始寫有關fpga從入門到精通的教程吧,這也算是給我國積體電路的發展做出微薄的貢獻吧。本門課程主要是針對有一定數電基礎的人看的。所以不會不像其他教程那樣,上來就跟你講verilog,跑馬燈,按鍵,計數器等...

Selenium 入門到精通系列 四

selenium 入門到精通系列 ps 滑鼠右鍵 滑鼠懸停 鍵盤操作方法 usr bin env python coding utf 8 date 2019 04 23 16 12 33 author benlam link from selenium import webdriver from s...

Hyperf從入門到精通(1)

編譯安裝 建立軟鏈 對php fpm執行使用者進行設定 建立軟鏈 配置環境變數,加入全域性命令 啟動php fpm 服務 檢視是否啟動 殺死php fpm 安裝swoole 安裝composer 安裝redis 安裝hyperf 壓力測試 hyperf從入門到精通第一講,介紹hyperf框架的特點,...