Bỏ qua nội dung

Thiết kế logic số

Kỹ thuật Điện Đại học · Chủ đề 3

3.1

Khóa học này là gì và cách sử dụng nó

Đây là khóa học thứ ba trong Kỹ thuật Điện Đại học: thiết kế logic số — cách bit được biểu diễn, kết hợp, lưu trữ và định thời bên trong mọi máy tính. Khóa học không yêu cầu kiến thức trước về điện tử: các nguyên tố cơ bản gồm hai mức điện áp và một vài cổng logic. mọi máy tính. Nó không yêu cầu kiến thức điện tử trước: các nguyên tố chỉ có hai mức điện áp và một vài cổng logic. mức điện áp và một vài cổng logic.

  • Đơn vị 3.1 xây dựng các hệ đếm: nhị phân, thập lục phân, bù hai.
  • Các đơn vị 3.2–3.3 kết hợp logic: đại số Boolean, bản đồ Karnaugh, khối tổ hợp các khối.
  • Các đơn vị 3.4–3.5 bổ sung thời gian: latch, flip-flop và máy trạng thái có xung clock.
  • Đơn vị 3.6 lưu trữ các mẫu: bộ đếm, thanh dịch chuyển, bộ nhớ.
  • Đơn vị 3.7 mô tả chúng bằng HDL và kiểm chứng bằng testbench.

Mỗi đơn vị bắt đầu bằng một câu chuyện, trình bày hình ảnh trước khái niệm chính thức, định nghĩa thuật ngữ chính xác, giải quyết hai ví dụ tăng dần mà phép toán của chúng được xác minh bởi máy tính, nêu những sai lầm kinh điển, và kết thúc bằng bản tóm tắt ba dòng. Thói quen kiểm tra trong khóa học này: mọi đáp án Boolean đều được xác minh bởi tóm tắt. Thói quen kiểm tra của khóa học này: mọi câu trả lời đúng/sai đều được xác minh bằng đánh giá toàn diện — một hàm 3 đầu vào chỉ có 8 dòng, nên kiểm tra tất cả chúng, hoặc bằng tay trên bảng chân lý hoặc bằng vòng lặp trong sandbox.

Từ vựng Luyện tập
English Tiếng Việt
latch/lætʃ/ Khóa
flip-flops bộ nhớ flip-flop
at the clock edge ở cạnh xung clock
toggles chuyển trạng thái (toggles)
excitation table/eksɪˈteɪʃn ˈteɪbl/ Bảng kích thích
finite state machine/ˈfaɪnaɪt steɪt məˈʃiːn/ Máy trạng thái hữu hạn
state diagram/steɪt ˈdaɪəɡræm/ Sơ đồ trạng thái
testbench/ˈtestbentʃ/ Bảng kiểm thử
moore machines máy Moore
mealy machines máy Mealy
3.1

Biểu diễn số và mã hóa

Một bộ điều nhiệt hiển thị 22.5 °C, nhưng vi điều khiển phía sau chỉ chứa các bit. Làm thế nào để 22.5 trở thành một chuỗi bit mà máy có thể cộng, so sánh và lưu trữ? Đơn vị 3.1 là quá trình chuyển đổi theo cả hai chiều.

Máy tính lưu trữ số dưới dạng nhị phân (cơ số 2). Chuyển đổi mang tính hệ thống: chia cho 2 đối với số nguyên (thu thập phần dư), nhân cho 2 đối với phần thập phân. Thập lục phân (cơ số 16) là cách viết tắt của nhị phân — mỗi chữ số hex chính xác là 4 bit: $0xB = 1011$.

Một hộp thanh ghi 8-bit được chia thành các vị trí bit với trọng số 128, 64, 32, 16, 8, 4, 2, 1; chuỗi 10011100 được đánh dấu với trọng số 128+16+8+4 = 156
Trọng số trên các bit: đọc chuỗi bằng cách cộng các trọng số nằm dưới mỗi 1

Suy ra bù hai. Chúng ta cần một mã hóa sao cho phép trừ tái sử dụng bộ cộng: $a - b = a + (b\text{ negated})$ phải giữ giá trị theo modulo $2^N$. Số đối cộng của $b$ theo modulo $2^N$ là $2^N - b = (2^N - 1 - b) + 1$ — và $2^N - 1 - b$ chính xác là "mọi bit của $b$ bị đảo ngược" (mỗi bit có trọng số 1 lật sang 0 và ngược lại). Vì vậy, lấy đối số = đảo ngược + 1, và quá trình suy diễn chính là chứng minh rằng phép cộng vẫn hoạt động không thay đổi.

Bù hai biểu diễn số nguyên có dấu trong N bit: đảo ngược mỗi bit và thêm 1 để đảo ngược. Trong 8 bit, $-5$ là $\overline{00000101}$ cộng với 1, tức là $11111011$. Phạm vi chạy từ $-2^{N-1}$ đến $+2^{N-1}-1$ — đó là −128 đến +127 trong 8 bit. Vượt quá xảy ra khi kết quả nằm ngoài phạm vi: cộng hai số dương và đọc được số âm (hoặc ngược lại) là quy tắc phát hiện dựa trên dấu; carry ra ngoài MSB không phải vượt quá, carry khác nhau giữa carry vào MSB thì có. vào MSB là.

Ví dụ hướng dẫn 1 (chuyển đổi và kiểm tra). Chuyển 156 sang nhị phân: $156 = 128 + 16 + 8 + 4 = 10011100$ ✓. Số tương tự trong thập phân: nhóm các bit theo bốn $128 + 16 + 8 + 4 = 156$ ✓. Cùng một số trong hệ thập phân: nhóm các bit thành bốn từ bên phải — $1001\ 1100 = 0x9C$ ✓. Và phần thập phân 0.625: nhân với 2 → 1.25 (1), 0.25×2 → 0.5 (0), 0.5×2 → 1.0 (1): $0.625 = 0.101_2$ ✓ ($0.5 + 0.125$).

Ví dụ hướng dẫn 2 (số âm và tràn, nâng cao). Mã hóa −100 trong 8 bit: $100 = 01100100$; đảo ngược $10011011$; thêm 1 → $10011100$. Kiểm tra bằng quá: 156, do đó số nguyên có dấu $156 - 256 = -100$-bit không thể chứa nó — các bit tính toán $100 + 50 = 150 > 127$, giải mã thành 8. Quy tắc dấu bắt được: số dương + số dương đọc ra số âm ✓ (và carry-into-MSB là $10010110$ trong khi carry-out là $-106$). đọc số dương thành số âm ✓ (và carry vào MSB là 1 trong khi carry ra là 0). Máy không bị lỗi; độ rộng đã bị lỗi.

Lỗi thường gặp. Đọc số bù hai như số không dấu (156 và −100 chia sẻ bits — trình diễn giải quyết). Quên phạm vi bất đối xứng: −128 tồn tại, +128 không được. Xem carry-out là overflow — chỉ có sự bất thường của carry mới được tính.

Tóm tắt: chuyển đổi nhị phân↔ thập phân theo trọng số và nhân đôi; nhóm hex bốn bit; bù hai bù = đảo ngược + 1, phạm vi $-2^{N-1}\ldots 2^{N-1}-1$; phát hiện overflow theo sự bất thường về dấu, không phải carry-out.

Từ vựng Luyện tập
English Tiếng Việt
digital logic design/ˈdɪdʒɪtl ˈlɒdʒɪk dɪˈzaɪn/ digital logic design: thiết kế logic số
binary/ˈbaɪnəri/ binary
hexadecimal/ˌheksəˈdesɪml/ hexadecimal
two's complement/tuːz ˈkɒmplɪmənt/ two's complement
range/reɪndʒ/ range
overflow/ˌəʊvəˈfləʊ/ overflow
boolean algebra/ˈbuːlɪən ˈældʒɪbrə/ lập luận布尔 (Boolean algebra)
absorption/əbˈsɔːpʃn/ luật hấp thụ
de morgan's theorem/də ˈmɔːɡənz ˈθɪərəm/ định lý De Morgan
karnaugh map/ˈkɑːnɔː mæp/ bảng Karnaugh
3.2

Đại số Boolean và bản đồ Karnaugh

Đèn hành lang phải bật/tắt từ cả hai đầu: hai công tắc, một bóng đèn — XOR mà thợ điện đấu nối là một hàm Boolean. Đại số Boolean thao tác trên biểu thức với AND ($\cdot$), OR ($+$), NOT ($'$). Các luật tương tự đại số thông thường cộng thêm hấp thụ: $A + A\cdot B = A$ và $A\cdot (A+B) = A$. Định lý De Morgan là công cụ chính:

$$(A \cdot B)' = A' + B' \qquad (A + B)' = A' \cdot B'$$

— phá vỡ thanh, đổi dấu.

Bản đồ Karnaugh sắp xếp bảng chân lý sao cho các ô lân cận khác nhau về một biến (thứ tự mã Gray); nhóm các ô 1, 2, 4, 8 (lũy thừa của hai, hình chữ nhật) đọc ra dưới dạng tích các biến.

Bản đồ Karnaugh ba biến với các ô 1 tại m1, m3, m5 và m7, hai cột giữa, được khoanh tròn như một nhóm bốn
F = Σm(1, 3, 5, 7): nhóm bốn chỉ giữ lại C, do đó F = C

Ví dụ minh họa 1 (hàm lẻ). Hàm 3-biến $F = \sum m(1, 3, 5, 7)$ (các hàng lẻ) ánh xạ đến một cặp cột — mọi ô nơi $C = 1$ — nên $F = C$ trực tiếp: tất cả bốn minterms chỉ chung duy nhất $C$. Việc kiểm tra: đánh giá $C$ đối với tất cả 8 hàng của bảng gốc; nó khớp chính xác (được máy kiểm chứng). Don't-cares (tổ hợp đầu vào không thể xảy ra) có thể tham gia bất kỳ nhóm nào — sử dụng chúng để mở rộng nhóm, tuyệt đối không tạo nhóm mới.

Ví dụ minh họa 2 (đa số 4-biến, được máy kiểm chứng, nâng cấp). Hàm đa số $M(A,B,C,D)$ bằng 1 khi ba hoặc nhiều hơn đầu vào là 1: các minterms của nó là $\sum m(7, 11, 13, 14, 15)$. Nhóm hóa trên bản đồ 4-biến: bốn các cặp chồng chập, mỗi cặp chia sẻ $m_{15}$, tạo ra $ABC + ABD + ACD + BCD$, phân tích thành $M = A\cdot B\cdot(C + D) + C\cdot D\cdot(A + B)$. Kiểm tra máy: đánh giá cả định nghĩa (đếm $\geq 3$) và hàng trên tất cả 16 — chúng khớp nhau hoàn toàn ✓. Hãy chú ý đến hình dạng của đáp án: bản đồ cho bốn sản phẩm 3-input thay vì tổng minterm phẳng 5, và phân tích chúng thành hai sản phẩm giúp tiết kiệm thêm cổng logic.

Lỗi thường gặp. Nhóm các ô chéo (các ô phải là hình chữ nhật trong vòng lặp mã Gray, nên các cạnh tiếp xúc). Viết một biểu thức nhóm từ các biến mà thay đổi bên trong nhóm — chỉ có các biến không đổi mới tồn tại. Tin rằng một phép rút gọn chưa được kiểm chứng: việc kiểm tra hàng 16 là miễn phí.

Tóm tắt: Các định luật Boolean cộng với De Morgan biến đổi biểu thức; K-map nhóm các hình chữ nhật kích thước lũy thừa hai theo thứ tự Gray; các nhóm chỉ giữ lại các biến không đổi; don't-care mở rộng nhưng không bao giờ tạo ra; hãy kiểm chứng mọi phép rút gọn một cách toàn diện.

Từ vựng Luyện tập
English Tiếng Việt
don't-cares các điều kiện không quan trọng (don't-cares)
combinational logic/ˌkɒmbɪˈneɪʃənl ˈlɒdʒɪk/ combinational logic: mạch tổ hợp
3.3

Các khối xây dựng tổ hợp

Một máy bán hàng tự động phục vụ một trong bốn loại đồ uống bằng hai lần nhấn nút: đó bộ chọn, bộ giải码 phía sau màn hình, bộ cộng bên trong logic trả tiền — các khối tổ hợp là lớp trung gian có thể tái sử dụng giữa các cổng và hệ thống. Cổng logic kết hợp thành các khối logic tổ hợp tiêu chuẩn mà hành vi của chúng là một hàm thuần túy của các đầu vào hiện tại:

  • Multiplexer (MUX): bộ chọn dữ liệu từ $2^n$ đến 1; n bit chọn chọn một đầu vào. $Y = \sum (D_i \cdot minterm_i(selects))$.
  • Decoder: n đầu vào sang $2^n$ đầu ra, đúng một mức cao — đó là bộ tạo minterm bộ phát tín hiệu.
  • Bộ cộng: cộng nửa cộng hai bit ($S = A \oplus B$, đi kèm $C = A\cdot B$); cộng đầy đủ cộng ba (hai toán hạng plus lấy vào): $S = A \oplus B \oplus C_{in}$, $C_{out} = A\cdot B + C_{in}\cdot (A \oplus B)$.
Sơ đồ cổng của bộ cộng đầy đủ: hai cổng XOR cho tổng, hai cổng AND và một cổng OR cho phần thừa, với các đầu vào A, B, Cin được đấu nối qua
Bộ cộng đầy đủ: năm cổng, một trong những mạch được tái sử dụng nhiều nhất trong tính toán

Ví dụ có hướng dẫn 1 (MUX và bộ cộng, đã kiểm tra). A MUX từ 4 sang 1 với chọn $S_1S_0 = 10$ tạo ra $D_2$ — trọng số thập phân của mã chọn xác định đầu vào dữ liệu. Kiểm tra bộ cộng đầy đủ tại $A=1, B=1, C_{in}=1$: $S = 1\oplus 1\oplus 1 = 1$, $C_{out} = 1 + 1\cdot 0 = 1$ — ba bit một, đầu ra nhị phân 11 (tổng 1, phần thừa 1): $3 = 2 + 1$ ✓.

Ví dụ có hướng dẫn 2 (bộ cộng lan truyền 2 bit, được máy xác minh, nâng cao). Chuỗi hai bộ cộng đầy đủ: bộ cộng đầu tiên cộng các bit thấp, phần thừa của nó cung cấp cho bộ cộng thứ hai. Cộng $11_2 + 01_2$ ($3 + 1$): các bit thấp $1 + 1$ tạo ra $S_0 = 0$, phần thừa 1; các bit cao $1 + 0 + 1$ tạo ra $S_1 = 0$, phần thừa 1 — đầu ra $100_2 = 4$ ✓ (máy kiểm tra qua tất cả bốn cặp đầu vào theo từng giai đoạn). Mẫu này mở rộng chính xác: một bộ cộng n-bit gồm n bộ cộng đầy đủ và không có gì khác, và phần thừa lan truyền xung quanh nó — điều này cũng là giới hạn tốc độ của nó, sẽ được cố định sau bởi cơ chế xem trước phần thừa.

Rủi ro là những xung nhiễu tức thời khi thay đổi đầu vào đi qua các đường truyền không đồng đều; các đường dẫn; chúng quan trọng vì một nhiễu động có thể bị phát hiện như một cạnh xung clock. Giải pháp là nhóm hóa dư thừa (duy trì vùng bao phủ rủi ro) — phát hiện chúng bằng cách liệt kê khi quy cách kỹ thuật cấm nhiễu động.

Lỗi thường gặp. Đọc ngược MUX (tín hiệu chọn dữ liệu, không phải (giá trị của đầu ra). Quên hướng của chuỗi truyền trong bộ cộng ripple. Coi một mối nguy hiểm như một lỗi logic — giá trị cuối cùng đúng; thời điểm transient chính là lỗi.

Tóm tắt: MUX chọn theo mã có trọng số, decoder tạo minterm, bộ cộng đầy đủ = năm cửa logic cộng ba bit; chuỗi ripple mở rộng bằng cách lặp lại; các mối nguy đều mang tính transient, và phủ che dư thừa loại bỏ chúng.

Khám phá

Follow the carry from the low bit upward

$2C_{out}+S=A+B+C_{in}$

The worked 11₂ + 01₂ addition produces low sum bits 00 and a final carry 1, giving the full 100₂ result. Inspect either stage in the full-adder truth table, compare three ones entering one stage, and extend the chain to four bits.

Khám phá

Same code, a data value or one high line

$i=2S_1+S_0,\quad Y_{MUX}=D_i$

With S₁S₀ = 10, the MUX passes D₂ while the decoder raises Y₂. Set D₂ to 0 or 1 without changing the code, then change an unselected data bit and compare the outputs. The table shows every select code for the current data.

Từ vựng Luyện tập
English Tiếng Việt
multiplexer/ˈmʌltɪpleksə/ Bộ chọn đa
decoder/dɪˈkəʊdə/ Bộ giải mã
3.4

Latch và flip-flop

Chuông cửa nhớ rằng nó đã được nhấn sau khi ngón tay rời khỏi — cái bộ nhớ đơn giản nhất là phản hồi. Logic tuần tự có trạng thái — bộ nhớ. Một latch nhạy với mức: SR latch (NOR ghép chéo) nhớ input nào đã xung; D latch theo dõi D khi ENABLE ở mức cao, đóng băng khi ở mức thấp. Flip-flop kích hoạt theo cạnh: D flip-flop mẫu D tại cạnh clock và giữ nguyên cho đến cạnh tiếp theo — Q sau cạnh bằng D trước cạnh đó.

$$Q_{next} = D \quad \text{(D flip-flop, at each rising edge)}$$

Flip-flop J-K loại bỏ trạng thái cấm của SR: $J=K=1$ chuyển đổi ($Q'$ tiếp theo). Bảng kích thích chạy ngược lại quá trình này — với một chuyển đổi mong muốn $Q \to Q^+$, nó liệt kê các đầu vào cần thiết (D: $D = Q^+$; J-K: giữ $0{,}0$, đặt $1{,}0$, xóa $0{,}1$, đảo $1{,}1$).

Sơ đồ thời gian: CLK, một đầu vào D dao động giữa các cạnh, và Q chỉ thay đổi tại các cạnh rising sang 1, 0, 1
Q sao chép D chỉ tại các cạnh lên của xung clock

Ví dụ minh họa 1 (đọc sơ đồ thời gian). Một D flip-flop nhận $D = 1$ tại cạnh rising đầu tiên, $D = 0$ tại cạnh thứ hai, $D = 1$ tại cạnh thứ ba: Q đọc 1, 0, 1. Giữa các cạnh, D có thể dao động tùy ý — không có mẫu nào được thu thập. Thời gian Sơ đồ minh họa điều này: Q chỉ thay đổi tại các thời điểm cạnh.

Ví dụ hướng dẫn 2 (chuỗi J-K, theo dõi bằng máy, nâng cấp). Bắt đầu từ Q = 0, áp dụng $J,K$ = (1,0), (1,1), (0,1), (0,0). từng bước: (1,0) thiết lập → 1; (1,1) chuyển trạng thái → 0; (0,1) đặt lại → 0; (0,0) giữ nguyên → 0. Q đọc được 1, 0, 0, 0 (theo dõi bằng máy ✓). Thiết kế sử dụng: bảng kích hoạt chạy ngược lại — để xây dựng bộ đếm đi qua 0 → 1 → 0 → 0 → 0, đọc mỗi chuyển tiếp từ bảng J-K và các tín hiệu vào cần thiết sẽ xuất hiện (đặt, đảo, xóa, giữ nguyên). Việc chọn flip-flop là tra cứu bảng, không phải bài đố.

Lỗi thường gặp. Lấy mẫu trên cạnh sai (xuống hay lên — quy cách ghi rõ). Nhầm lẫn latch và flip-flop: latch trong suốt trong toàn bộ mức, flip-flop chỉ ở một thời điểm. Mong đợi Q thay đổi ngay khi D thay đổi — Q chờ đến cạnh. Tóm tắt: latch trong suốt theo mức, flip-flop kích hoạt theo cạnh; Q sau

cạnh = D trước đó; J-K loại bỏ trạng thái cấm bằng cách đảo; bảng kích hoạt đảo ngược hành vi thành tín hiệu vào cần thiết. Một máy bán hàng tự động từ chối chuỗi tiền xu đã chấp nhận hôm qua — không phải vì

Khám phá

Same D and clock, different memory behaviour

$Q_{FF}^{+}=D\;\text{at }\uparrow CLK$

The worked sequence presents D = 1, 0 and 1 at three rising edges, with changes in between. Compare the transparent latch with the edge-triggered flip-flop, or change D and clock separately to see exactly when each output updates.

3.5

Máy trạng thái hữu hạn

tiền xu thay đổi, mà vì chuỗi khác. Chuỗi cần một máy có bộ nhớ về vị trí hiện tại: một máy trạng thái hữu hạn (FSM) là trạng thái + chuyển tiếp: một sơ đồ trạng thái (vòng tròn và mũi tên gán nhãn), được triển khai dưới dạng logic trạng thái tiếp theo + thanh ghi trạng thái + logic đầu ra. mũi tên), được thực hiện bằng logic trạng thái tiếp theo + thanh ghi trạng thái + logic đầu ra. Máy Moore tính đầu ra chỉ dựa vào trạng thái (đầu ra thay đổi sau xung clock); máy Mealy tính từ trạng thái và đầu vào (đầu ra có thể thay đổi giữa chu kỳ, nhanh hơn nhưng dễ bị nhiễu). (đầu ra có thể thay đổi giữa chu kỳ, sớm hơn nhưng dễ gây nhiễu).

Sơ đồ trạng thái của bộ phát hiện tính chẵn lẻ: hai vòng tròn CHẴN và LẺ; mũi tên đầu vào1 chạy ngang giữa chúng, mũi tên đầu vào0 quay lại chính nó; huy hiệu đầu ra của vòng tròn LẺ hiển thị 1
Hai trạng thái, một đầu ra: toàn bộ thiết kế của bộ phát hiện tính chẵn lẻ

Ví dụ có hướng dẫn 1 (bộ phát hiện tính chẵn lẻ, theo dõi). Kích hoạt đầu ra khi số số lượng 1 xuất hiện là số lẻ. Hai trạng thái (CHẴN, LẺ); mỗi bit đầu vào di chuyển giữa chúng; đầu ra = (trạng thái == LẺ). Chuỗi 1, 0, 1, 1: CHẴN → LẺ → LẺ → CHẴN → LẺ, nên đầu ra sau bit thứ tư là 1 (đã thấy ba 1 — lẻ ✓ theo dõi bằng máy). Quy trình thiết kế: sơ đồ trạng thái → bảng trạng thái → (nhị phân) mã hóa trạng thái → bảng kích thích cho mỗi flip-flop → tối ưu hóa logic trạng thái tiếp theo. Với một bit trạng thái ($0$ = CHẴN, $1$ = LẺ) logic trạng thái tiếp theo là một phép XOR duy nhất: $Q^+ = Q \oplus in$ — máy là một bit chẵn lẻ.

Ví dụ có hướng dẫn 2 (bộ phát hiện 1011, nâng cao). Phát hiện chuỗi dãy 1011 (chồng chập). Các trạng thái theo dõi tiền tố khớp dài nhất: S0 (bắt đầu), S1 (đã xem 1), S10 (đã xem 10), S101 (đã xem 101). Mỗi chuyển tiếp dẫn đến đuôi dài nhất của đầu vào tính đến thời điểm đó vẫn là tiền tố của 1011:

Trạng thái đầu vào 0 đầu vào 1
S0 S0 S1
S1 S10 S1
S10 S0 S101
S101 S10 S1, phát hiện

Từ S101, một 1 hoàn thành 1011: đầu ra báo đã phát hiện và máy chuyển về S1, vì phần đuôi "1" đã bắt đầu sự trùng khớp tiếp theo (sự chồng chập). Một 0 từ S101 để lại "1010", có đuôi "10" là tiền tố, nên nó đi đến S10, không trở về S0. Bốn trạng thái cần hai flip-flop ($2^2 = 4$ ✓). Theo dõi dòng 1,0,1,1,0,1,1: S0→S1→S10→S101→phát hiện (S1), sau đó 0→S10, 1→S101, 1→phát hiện lần nữa. Dòng dữ liệu chứa hai bản sao chồng chập, tại các bit 1–4 và 4–7, và máy tìm thấy cả hai (máy theo dõi ✓). Bộ phát hiện restarted ở S0 sau mỗi lần phát hiện sẽ bỏ sót lần thứ hai. Tối ưu hóa trạng thái gộp các trạng thái tương đương (cùng đầu ra, cùng trạng thái tiếp theo) — một FSM có trạng thái thừa vẫn hoạt động nhưng lãng phí flip-flop và mạch logic.

Lỗi thường gặp. Quên bộ reset chồng chập (phần đuôi khớp là phần đầu của lần khớp tiếp theo). Mã hóa trạng thái trước khi kiểm tra bảng trạng thái để tìm các trạng thái tương đương. Chọn Moore khi yêu cầu đáp ứng cùng chu kỳ (Mealy), hoặc Mealy khi đầu ra cấp cho mạch bất đồng bộ (xung nhiễu).

Tóm tắt: trạng thái + chuyển đổi + đầu ra; Moore từ trạng thái, Mealy từ trạng thái và đầu vào; sơ đồ → bảng → mã hóa → kích thích → tối thiểu hóa; phát hiện chồng chập và gộp trạng thái là nơi điểm số được ghi nhận hay mất đi.

Khám phá

Keep the suffix that starts the next match

$Q^{+}=f(Q,x)$

Clock the worked 1011011 stream and find both 1011 matches at bits 1–4 and 4–7. Compare the overlapping Mealy detector with the two-state parity machine, and distinguish a selected input from a clocked state transition.

3.6

Thanh ghi, bộ đếm và bộ nhớ

Bảng điểm hiển thị 7, sau đó 8 — một số thay đổi trong khi các số còn lại đứng yên: sự cập nhật chọn lọc đó là một thanh ghi, và đếm là một thanh ghi tự cập nhật nó. Một thanh ghi là một tập hợp flip-flop dùng chung xung clock: nạp n bit mỗi cạnh. Một thanh ghi dịch truyền bit dọc theo: serial-in serial-out trì hoãn dòng bit; vào serial xuất song song chuyển đổi từ serial sang song song.

Một bộ đếm rung nối chain T-flip-flop (mỗi đầu ra làm clock cho tiếp theo); một bộ đếm đồng bộ điều khiển tất cả xung clock từ một cạnh và tính toán mỗi lần đảo với mạch logic — không có độ trễ tích lũy.

Sơ đồ khối thanh ghi: 4 flip-flop D dùng chung CLK, với mạch đảo của bộ đếm cấp cho mỗi đầu vào D; bên dưới, biểu đồ thời gian 000→001→010→011
Một xung clock, đảo đã tính toán: thanh ghi và biểu đồ thời gian của bộ đếm đồng bộ

Ví dụ minh họa 1 (bộ đếm tăng 3 bit, theo dõi). Một bộ đếm đồng bộ 3 bit tăng đảo bit 0 mỗi xung clock, bit 1 khi $Q_0 = 1$, bit 2 khi $Q_1\cdot Q_0 = 11$: sau RESET, các giá trị đếm là 000, 001, 010, 011 … 111, sau đó quay lại 000 (8 trạng thái = $2^3$ ✓ — kiểm tra phạm vi đếm; theo dõi bằng máy). Các điều kiện đảo chính là AND của tất cả các bit thấp hơn — một bộ đếm nhị phân mang số khi mọi bit thấp hơn đều là 1, điều này có nghĩa là "thêm 1" có ý nghĩa.

Ví dụ minh họa 2 (bộ đếm mod-6, mở rộng). Một bộ đếm mod-6 đếm 000–101 và quay lại 000 — sáu trạng thái, không phải tám. Đối với thiết kế đồng bộ, chọn trạng thái tiếp theo 000 khi từ hiện tại là 101, 110 hoặc 111; ngược lại thì cộng thêm 1. Theo dõi: 000, 001, 010, 011, 100, 101, sau đó 000. Như vậy 101→000 xảy ra tại cạnh xung clock tiếp theo; cả mã chưa dùng 110 hay 111 cũng phục hồi về 000 tại cạnh xung tiếp theo. Điều kiện $Q_2\cdot Q_1$ chỉ phát hiện chỉ 110 và 111. Nó bằng 0 tại 101, nên nếu chỉ dùng điều kiện này để chọn trạng thái tiếp theo 000 sẽ vẫn cho phép lưu giữ 110 sau khi qua 101. Xóa bất đồng bộ là một thiết kế khác: nó có thể đạt đến 110 trong thời gian ngắn trước khi xóa, nên không được mô tả là bước nhảy đồng bộ này. Bộ nhớ là một mảng được tổ chức: k bit địa chỉ chọn một trong $2^k$ từ của m bit — một bộ nhớ 8K×8 có 13 đường địa chỉ và 8 đường dữ liệu ($8K = 2^{13} = 8192$ từ ✓).

Lỗi thường gặp. Bộ đếm gợn sóng nhìn ổn định ở tốc độ thấp nhưng hỏng ở spec — độ trễ tích lũy là từng giai đoạn. Quên xử lý các trạng thái không sử dụng trong bộ đếm mod-N (chúng phải phục hồi về trạng thái hợp lệ). Nhầm lẫn quy ước hướng dịch chuyển (MSB-trước hay LSB-trước serial).

Tóm tắt: thanh ghi tải dữ liệu theo xung chung; thanh ghi dịch chuyển chuyển đổi giữa thường serial và song song; bộ đếm đồng bộ tính toán đảo bit bằng logic; mod-N cần xử lý trạng thái không sử dụng; bộ nhớ có $2^k$ từ của m bit, k địa chỉ Một module, một bảng thử nghiệm toàn diện: mô tả và chứng minh đi kèm nhau

Khám phá

One clock edge moves every stored bit

$Q^{+}=\{sin,Q_3,Q_2,Q_1\}$

Starting from 0000, clock the lesson’s right-shift input stream 1, 1, 0, 1 to get 1000, 1100, 0110, 1011. Follow each old bit to its new position, and distinguish selecting the next input from clocking it into storage.

Khám phá

Predict the toggles, then clock the new count

$Q^{+}=Q\oplus T$

Trace the 3-bit counter’s eight states and see why each bit toggles when all lower old bits are 1. Compare synchronous mod-6, where 101 goes directly to 000. Load either unused code 110 or 111 and check recovery at the next clock edge.

Từ vựng Luyện tập
English Tiếng Việt
register/ˈredʒɪstə/ Thanh ghi
3.7

Cơ bản HDL và xác minh

Khuẩn 64 cổng bằng tay dễ gây ra 64 lỗi — và giải pháp của ngành công nghiệp không phải vẽ cẩn thận hơn mà là mô tả kết hợp với kiểm chứng. Một ngôn ngữ mô tả phần cứng (Verilog/VHDL) mô tả cấu trúc và hành vi dưới dạng mã tổng hợp được — những gì có thể trở thành các cổng logic — được tách khỏi testbench, mô phỏng nhưng không bao giờ trở thành phần cứng.

module full_adder(input a, b, cin, output sum, cout);
  assign sum  = a ^ b ^ cin;
  assign cout = (a & b) | (cin & (a ^ b));
endmodule
Mô-đun Verilog bên trái và biểu đồ sóng mô phỏng bên phải: testbench cung cấp tất cả tám tổ hợp đầu vào trong khi sum và cout theo dõi a+b+cin
Một module, một testbench toàn diện: mô tả và chứng minh đi kèm

Ví dụ minh họa 1 (testbench toàn diện). Testbench cung cấp tất cả 8 tổ hợp đầu vào và so sánh với bảng chân lý số học ($a + b + cin = 2\cdot cout + sum$) — xác minh bằng máy: tất cả 8 đều qua ✓. Tính chất này là điểm mấu chốt: mô hình tham chiếu mang tính toán học, không phải một mô tả cổng khác, do đó việc kiểm tra độc lập với cách triển khai.

Worked example 2 (a shift register in HDL, escalated). Describe a 4-bit serial-in shift register:

module shift4(input clk, sin, output reg [3:0] q);
  always @(posedge clk) q <= {q[2:0], sin};
endmodule

Phép nối {q[2:0], sin} chính là quá trình dịch chuyển — dữ liệu vào từ bên phải, dữ liệu ra rơi khỏi bên trái. Testbench cung cấp sin = 1,0,1,1 trong bốn chu kỳ xung clock và bản ghi cho q = 0001, 0010, 0101, 1011 ✓ (mô phỏng bằng máy) — danh sách dịch chuyển của đơn vị 3.6, bây giờ chỉ còn bốn dòng mô tả.

Lỗi thường gặp. Testbench tái diễn lại phần thực hiện (một bản sao, không chứng minh được điều gì). Các cấu trúc không tổng hợp được trong module phần cứng. Thiếu reset trong always khối — bẫy của đơn vị 3.6 một lần nữa.

Tóm tắt: module tổng hợp được so với testbench không tổng hợp được, luôn tách biệt; mô hình tham chiếu phải độc lập (toán học hoặc theo dõi); kiểm tra toàn diện cho không gian đầu vào nhỏ; gửi kèm module với bằng chứng của nó.

Khám phá

The concatenation becomes a clocked bit transfer

$Q^{+}=\{Q_2,Q_1,Q_0,sin\}$

Follow q <= {q[2:0], sin} at each rising edge. From an explicitly initialized 0000, the lesson’s inputs 1, 0, 1, 1 produce 0001, 0010, 0101, 1011. Each new position takes an old bit; the previous Q₃ shifts out.

Từ vựng Luyện tập
English Tiếng Việt
adder/ˈædə/ Cộng
half adder/hɑːf ˈædə/ half adder: bộ cộng nửa
full adder/fʊl ˈædə/ Cộng đầy đủ
hazards hiện tượng nguy hiểm (hazards)
sequential logic/siːˈkwenʃl ˈlɒdʒɪk/ sequential logic: mạch tuần tự
shift register/ʃɪft ˈredʒɪstə/ Thanh ghi dịch
ripple counter/ˈrɪpl ˈkaʊntə/ Bộ đếm xung
synchronous counter/ˈsɪŋkrənəs ˈkaʊntə/ Bộ đếm đồng bộ
memory/ˈmeməri/ Bộ nhớ
hardware description language/ˈhɑːdweə dɪˈskrɪpʃn ˈlæŋɡwɪdʒ/ Ngôn ngữ mô tả phần cứng
synthesizable/ˈsɪnθəsaɪzəbl/ Có thể tổng hợp

Bài học tương tác về chủ đề này

Làm theo từng bước, kèm theo bài tập kiểm tra ngay lập tức.

Nhiều chủ đề hơn trong Kỹ thuật Điện Đại học

Đăng nhập hoặc tạo tài khoản

IGCSE, A-Level & AP