Mạch nhớ một bit: latch, flip-flop và xung nhịp
Đầu ra của mạch chỉ đúng sau một trễ và đổi theo đầu vào, nên cần ghi lại một bit rồi giữ
XOR ra đúng sau 28 ps (ví dụ), sai tạm trước đó, và đổi tiếp khi đầu vào đổi; cần một chỗ ghi lại giá trị đúng và giữ; chỗ ấy là mạch nhớ một bit.
Một bit (chữ số nhị phân) là một chữ số nhị phân, nhận mức không hoặc mức một. Mạch giữ được một bit là mạch nhớ một bit.
Xem lời đọc
Ví dụ mạch XOR dựng từ bốn cổng NAND có đường dài nhất hai mươi tám ps. Trước lúc ấy, đầu ra có thể sai tạm. Muốn dùng đầu ra, ta cần đọc nó vào lúc nó đã đúng. Nhưng đầu vào có thể đổi tiếp ngay sau đó, và đầu ra lại đổi theo. Vậy ta cần một chỗ ghi lại giá trị đúng ấy rồi giữ nguyên. Giá trị này là mức không hoặc mức một, gọi là một bit. Mạch làm việc ấy gọi là mạch nhớ một bit.
Số 28 ps là ví dụ đường dài nhất của XOR bốn NAND (NAND ① nối tới ② và ③, fan-out 2, 14 + 7 + 7 ps). Từ 'bit' viết tắt 'binary digit'. Mạch chỉ gồm cổng (như NAND, XOR) có đầu ra chỉ phụ thuộc đầu vào hiện tại nên gọi mạch tổ hợp; mạch nhớ thêm khả năng giữ giá trị cũ. Hai mạch tổ hợp nối nhau không giữ được giá trị: đầu vào đổi là đầu ra đổi theo, dù qua trễ.
Hai cổng đảo nối vòng vào nhau có hai trạng thái ổn định, nên giữ được một bit
Đầu ra mỗi cổng đảo vào đầu vào cổng đảo kia; mỗi trạng thái tự giữ vì dây kia kéo dây này về, bị đẩy nhẹ thì quay về; nhưng chưa có cách ghi bit mới.
Hai cổng đảo nối vòng gọi là vòng nhớ. Stable state (trạng thái ổn định) là trạng thái bị đẩy lệch nhẹ thì tự quay về.
Xem lời đọc
Ta nối hai cổng đảo thành vòng, đầu ra cổng đảo này vào đầu vào cổng đảo kia. Vòng này gọi là vòng nhớ. Giả sử một dây ở mức không thì cổng đảo nhận dây ấy cho dây kia mức một. Cổng đảo còn lại nhận mức một, cho mức không, đúng như giả sử. Ổn định nghĩa là bị đẩy lệch nhẹ, ví dụ ba phần mười vôn, thì tự quay về. Dây kia giữ mức một, kéo dây này về mức không, nên trạng thái ổn định. Đổi vai hai dây thì được trạng thái ổn định thứ hai, vậy vòng giữ được một bit. Nhưng vòng chưa có cách nào để ghi bit mới.
Còn gọi bistable (hai trạng thái bền); cách nối này là phản hồi dương: tín hiệu đi qua hai lần đảo nên quay về cùng chiều và củng cố chính nó. Dây ở 0,00 V và 1,80 V là hai trạng thái. 'Đẩy nhẹ' 0,30 V (ví dụ) thấp hơn ngưỡng của cổng đảo (điện áp đầu vào mà đầu ra bắt đầu đổi), nên cổng đảo vẫn ra cỡ 1,8 V; thôi đẩy thì dây về 0 V. Đẩy vượt điểm giữa cỡ 0,9 V (nửa điện áp cấp, ví dụ đối xứng) thì bit lật. Điểm giữa là điểm cân bằng không ổn định: lệch chút là rơi về một trong hai bên; chip thật có thể ở gần điểm này một lúc (metastability). Vòng nhớ cần điện áp cấp để giữ; mất điện là mất bit. Khi đứng yên mỗi cổng đảo ở mức không hoặc mức một nên chỉ còn dòng rò.
Latch là vòng nhớ cộng công tắc vào: khi cho phép thì ra theo đầu vào, khi ngừng cho phép thì giữ
Công tắc giữa đầu vào và vòng, điều khiển bằng tín hiệu cho phép; đóng thì đầu vào ép vòng theo nó, mở thì vòng giữ bit; đầu ra là dây của vòng nối với công tắc.
Latch (mạch lát) là vòng nhớ cộng một công tắc vào. Enable (tín hiệu cho phép) điều khiển công tắc ấy.
Xem lời đọc
Ta thêm một công tắc giữa đầu vào và vòng nhớ. Một tín hiệu điều khiển công tắc này, gọi là tín hiệu cho phép. Tín hiệu cho phép ở mức một thì công tắc đóng, đầu vào ép vòng theo nó. Lúc ấy dây nối với công tắc, tức đầu ra, đi theo đầu vào. Tín hiệu cho phép về mức không thì công tắc mở, đầu vào bị cắt khỏi vòng. Vòng nhớ giữ nguyên bit đã có, dù đầu vào còn đổi. Vòng nhớ cộng công tắc vào và tín hiệu cho phép gọi là mạch lát. Tóm lại, khi cho phép thì ra theo vào, khi ngừng cho phép thì giữ.
Còn gọi D-latch (D là đầu vào dữ liệu, data). Mô hình công tắc lý tưởng. Công tắc thật: nMOS một mình hụt mức một (V_DD − V_th), nên chip hay dùng nMOS và pMOS song song, gọi cổng truyền (transmission gate), truyền đủ cả hai mức. Đầu vào 'ép' được vòng vì nguồn của đầu vào cho dòng lớn hơn cổng đảo phản hồi; nhiều kiểu thật còn mở luôn vòng trong lúc cho phép để khỏi 'cãi nhau'. Lúc công tắc vừa đổi trạng thái, đầu vào cần đứng yên một khoảng nhỏ (setup, hold).
Latch cho phép lâu thì đầu ra đổi suốt khoảng ấy và bit chạy xuyên nhiều latch, nên chưa lấy mẫu gọn
Latch đang cho phép thì ra theo vào, truyền cả đoạn sai tạm tới mạch sau; hai latch cùng cho phép thì bit mới chạy xuyên qua cả hai; ta muốn đầu ra chỉ đổi một lần tại một thời điểm, tức lấy mẫu.
Sampling (lấy mẫu) là ghi lại giá trị đầu vào tại một thời điểm. Bit mới qua nhiều latch trong một lần cho phép là race-through (chạy xuyên).
Xem lời đọc
Mạch lát cho phép thì đầu ra theo đầu vào, kể cả đoạn sai tạm. Mạch nhận đầu ra này, gọi là mạch sau, cũng nhận cả đoạn sai tạm. Ta nối hai mạch lát liền nhau, cùng một tín hiệu cho phép. Bit mới đi qua mạch lát thứ nhất rồi qua luôn mạch lát thứ hai. Bit mới qua nhiều mạch lát trong một lần cho phép gọi là chạy xuyên. Ta muốn đầu ra chỉ đổi một lần, tại một thời điểm. Việc ghi lại giá trị tại một thời điểm như vậy gọi là lấy mẫu. Mạch lát cho phép lâu thì đầu ra đổi suốt khoảng ấy, nên chưa lấy mẫu gọn.
Latch còn gọi 'trong suốt' (transparent) khi cho phép. Thật ra khi ngừng cho phép latch giữ giá trị đầu vào lúc đó, nên nó có chỗ lấy mẫu ở lúc ngừng cho phép; khó khăn là suốt khoảng trong suốt, đầu ra đổi theo đầu vào (kể cả đoạn sai tạm) và chuỗi nhiều latch cùng cho phép cho bit chạy xuyên nhiều chặng. Có thiết kế dùng latch có chủ ý (hai latch cho phép lệch pha, mượn thời gian giữa các khối).
Xung nhịp là tín hiệu lên xuống đều đặn dùng chung, và ta chọn cạnh lên của nó làm lúc lấy mẫu
Một tín hiệu đều đặn làm tín hiệu cho phép chung; cạnh lên là lúc chuyển từ mức không lên mức một; nhiều nơi nhận cùng xung nhịp nên lấy mẫu gần như cùng lúc.
Clock (xung nhịp) là tín hiệu lên xuống đều đặn dùng chung. Rising edge (cạnh lên) là lúc nó chuyển từ mức không lên mức một.
Xem lời đọc
Ta dùng một tín hiệu lên xuống đều đặn làm tín hiệu cho phép chung. Tín hiệu đều đặn ấy gọi là xung nhịp. Xung nhịp ở mức không rồi lên mức một, và cứ thế lặp lại. Lúc xung nhịp chuyển từ mức không lên mức một gọi là cạnh lên. Ta chọn cạnh lên làm thời điểm lấy mẫu. Xung nhịp được dẫn tới nhiều nơi trong mạch, nên nhiều nơi lấy mẫu gần như cùng một lúc.
Xung nhịp thường do một mạch dao động riêng tạo ra, rồi dẫn tới nhiều nơi bằng một mạng dây; dây dài ngắn khác nhau làm xung nhịp tới các nơi lệch chút nên chỉ 'gần như' cùng lúc. Có kiểu lấy mẫu ở cạnh xuống (từ mức một về mức không); bài này chọn cạnh lên. Chỉ dùng xung nhịp làm tín hiệu cho phép của một mạch lát thì vẫn để tín hiệu chạy qua; hai mạch lát cho phép ngược nhau mới lấy mẫu ở cạnh. Ô nhận trên hình là mạch lấy mẫu ở cạnh lên, cấu tạo như một flip-flop.
Flip-flop ghép hai latch cho phép thay nhau theo xung nhịp, nên bit không chạy xuyên và đầu ra đổi ở cạnh lên
Mạch lát thứ nhất cho phép khi xung nhịp ở mức không, mạch lát thứ hai khi ở mức một; hai mạch lát không cùng cho phép nên hết chạy xuyên; tại cạnh lên thứ nhất giữ bit, thứ hai đưa bit ra.
Flip-flop (phờ líp phờ lóp) là hai latch nối tiếp, cho phép thay nhau theo xung nhịp. Nó lấy mẫu ở cạnh lên.
Xem lời đọc
Ta nối hai mạch lát liền nhau, cho phép ngược nhau. Mạch lát thứ nhất cho phép khi xung nhịp ở mức không. Mạch lát thứ hai cho phép khi xung nhịp ở mức một. Xung nhịp ở mức không thì mạch lát thứ nhất theo đầu vào, còn mạch lát thứ hai giữ. Đến cạnh lên, mạch lát thứ nhất ngừng cho phép và giữ bit lúc ấy. Cùng lúc ấy, mạch lát thứ hai được cho phép và đưa bit ra đầu ra. Hai mạch lát không cùng cho phép, nên bit không chạy xuyên và đầu ra đổi ở cạnh lên. Cặp mạch lát thay nhau cho phép như vậy gọi là phờ líp phờ lóp.
Còn gọi master–slave; trước đây hay dịch 'chủ–tớ', nhiều nơi nay dùng 'primary–secondary'; lời dùng 'thứ nhất/thứ hai'. Dạng D flip-flop lấy mẫu ở cạnh lên; có dạng lấy mẫu ở cạnh xuống. Đầu ra đổi sau cạnh lên một trễ nhỏ (clock-to-Q). Cần thêm một cổng đảo để có xung nhịp ngược cho mạch lát thứ hai; thật ra hai công tắc dùng xung nhịp và xung nhịp đảo. Đầu vào phải đứng yên một khoảng quanh cạnh lên (setup, hold).
Chu kỳ xung nhịp phải ít nhất cỡ đường dài nhất cộng một khoảng thêm cho flip-flop, để cạnh lên đọc đầu ra đã đúng
Đặt XOR giữa hai flip-flop: đầu ra XOR đúng sau đường dài nhất 28 ps (ví dụ); cạnh lên kế tiếp phải đến sau đó cộng một khoảng thêm; ví dụ ít nhất 40 ps; chu kỳ 20 ps thì đọc lúc còn sai tạm.
Clock period (chu kỳ xung nhịp) là thời gian giữa hai cạnh lên liên tiếp. Nó phải đủ dài cho đường dài nhất.
Xem lời đọc
Ta đặt mạch XOR giữa hai phờ líp phờ lóp. Phờ líp phờ lóp trước đổi ở cạnh lên, rồi đầu ra mạch XOR mất thời gian mới đúng. Phờ líp phờ lóp sau lấy mẫu ở cạnh lên kế tiếp. Thời gian giữa hai cạnh lên liên tiếp gọi là chu kỳ của xung nhịp. Chu kỳ quá ngắn thì cạnh lên kế tiếp đến lúc đầu ra còn sai tạm. Vậy chu kỳ phải ít nhất cỡ đường dài nhất, cộng một khoảng thêm cho chính phờ líp phờ lóp. Ví dụ hai mươi tám cộng mười hai thì chu kỳ ít nhất bốn mươi ps.
Điều kiện đầy đủ: chu kỳ ≥ (trễ từ cạnh lên tới lúc đầu ra flip-flop trước đổi, clock-to-Q) + (đường dài nhất) + (setup: đầu vào flip-flop sau phải đứng yên trước cạnh lên). Hold: đầu vào đứng yên một chút sau cạnh lên. Ba thời gian này gộp trong 'khoảng thêm cho flip-flop'; 12 ps là số ví dụ chọn để tổng 28 + 12 = 40 ps, và 40 ps là mức ví dụ tối thiểu (thiết kế thật chọn thêm lề). Các số trễ 7–14 ps và 12 ps chỉ để cùng thang với bài trước: công nghệ thật chậm hơn, và clock-to-Q cộng setup của flip-flop thật lớn hơn một cổng NAND. Chip thật có đường dài hàng chục cổng nên chu kỳ dài hơn nhiều.
Một flip-flop giữ một bit bằng cỡ hai chục transistor, tùy kiểu, nên hàng triệu bit tốn hàng chục triệu transistor
Vòng nhớ bốn transistor, flip-flop gồm hai mạch lát và phần phụ (công tắc, mạch phụ xung nhịp, mạch đặt lại), cỡ hai chục transistor tùy kiểu cho một bit; một triệu bit tốn hàng chục triệu; chỉ nêu vấn đề.
Một flip-flop giữ một bit bằng cỡ hai chục transistor, tùy kiểu. Hàng triệu bit cần hàng chục triệu transistor.
Xem lời đọc
Một mạch lát có vòng nhớ gồm hai cổng đảo, tức bốn transistor. Phờ líp phờ lóp gồm hai mạch lát nối nhau. Thêm phần phụ như công tắc, mạch phụ xung nhịp và mạch đặt lại. Tùy kiểu, mỗi phờ líp phờ lóp cần cỡ hai chục transistor. Nhưng mỗi phờ líp phờ lóp giữ được một bit. Một triệu bit cần một triệu phờ líp phờ lóp, tức hàng chục triệu transistor. Một bộ nhớ lớn có hàng triệu bit, nên cần diện tích rất lớn trên chip. Vậy ta cần một cách giữ bit gọn hơn nhiều.
Vòng nhớ: hai cổng đảo × 2 transistor = 4 transistor. Flip-flop D kiểu cổng truyền tĩnh chuẩn có 16 transistor: mỗi latch 8 (vòng nhớ 4, cổng truyền vào 2, cổng truyền hồi tiếp 2), thêm 2 transistor đảo xung nhịp thì 18. Kiểu động gọn hơn (TSPC, C2MOS) cỡ 9–12. Kiểu thư viện có thêm đặt lại (reset), đặt lên (set), mạch quét kiểm thử, đệm đầu ra thường cỡ 24–30 hoặc hơn (suy luận, chưa có số đo). Mô hình latch đơn giản của bài chỉ cần 6 transistor mỗi latch. Số chính xác tùy thư viện và công nghệ, nên lời nói 'cỡ hai chục'. Một triệu × (cỡ 10 đến 30) = cỡ 10 đến 30 triệu transistor, 'hàng chục triệu'.
Số liệu
- Loại số liệu: bài này không có số từ mô phỏng TCAD. Mọi số trên hình là VÍ DỤ minh họa, hình ghi "(ví dụ)": điện áp cấp 1,8 V (mức một 1,80 V, mức không 0,00 V), "đẩy nhẹ" 0,30 V, đường dài nhất 28 ps, khoảng thêm cho flip-flop 12 ps, chu kỳ 28 + 12 = 40 ps, chu kỳ quá ngắn 20 ps. Số ví dụ không phải số DEVSIM và không phải số của hãng nào.
- Điện áp cấp 1,8 V: chọn bằng điện áp máng lớn nhất của mô phỏng mẫu (DEVSIM, một nMOS 180 nm); mỗi công nghệ chọn điện áp cấp riêng.
- Cảnh 1 và 7: đường dài nhất 28 ps lấy từ bài trước (XOR dựng từ bốn cổng NAND, 14 + 7 + 7 = 28 ps, ví dụ). Khoảng thêm cho flip-flop 12 ps là số ví dụ chọn để tổng 28 + 12 = 40 ps; thời gian thật gồm trễ từ cạnh lên tới lúc đầu ra đổi và khoảng đầu vào phải đứng yên trước cạnh lên, và lớn hơn một cổng NAND. Các số trễ 7–14 ps chỉ để cùng thang với bài trước, công nghệ thật chậm hơn.
- Cảnh 2, vòng nhớ: hai cổng đảo nối vòng cho hai trạng thái ổn định (một dây 0,00 V và dây kia 1,80 V, hoặc ngược lại). "Đẩy nhẹ" 0,30 V (ví dụ) thấp hơn ngưỡng của cổng đảo nên cổng đảo vẫn ra cỡ 1,8 V; đẩy vượt điểm giữa cỡ 0,9 V (nửa điện áp cấp, ví dụ đối xứng) thì bit lật. Kiến thức chuẩn của giáo trình mạch số (Weste–Harris, Rabaey).
- Cảnh 3 và 6, mô hình công tắc lý tưởng: latch là vòng nhớ cộng một công tắc vào; flip-flop là hai latch cho phép ngược nhau. Công tắc thật hay dùng cổng truyền (nMOS và pMOS song song). Cấu trúc chuẩn của giáo trình mạch số (Weste–Harris, Rabaey).
- Cảnh 8, số transistor: vòng nhớ có hai cổng đảo × 2 transistor = 4 transistor. Flip-flop D kiểu cổng truyền tĩnh chuẩn có 16 transistor (18 nếu kể hai transistor đảo xung nhịp); kiểu động gọn hơn (TSPC, C2MOS) cỡ 9–12; kiểu thư viện có thêm đặt lại, đặt lên, quét kiểm thử, đệm đầu ra thường cỡ 24–30 hoặc hơn (suy luận, chưa có số đo). Số chính xác tùy thư viện và công nghệ, nên lời nói "cỡ hai chục, tùy kiểu"; hình chỉ để cùng thang, không đếm từng transistor. Nguồn: bằng sáng chế US4484087 (master-slave 16 IGFET), mô phỏng D-latch của Hades (Đại học Hamburg).