Hiểu thời gian đăng ký Shift


8

(Tôi đang học thiết kế mạch kỹ thuật số. Xin lỗi nếu đây là câu hỏi ngây thơ.)

Từ Wikipedia , tôi tìm thấy sơ đồ sau về thanh ghi dịch chuyển SIPO:

nhập mô tả hình ảnh ở đây

Theo tôi hiểu, thanh ghi thay đổi này được làm bằng DFF (D Flip-Flop). DFF được kích hoạt ở cạnh tăng của thời gian đồng hồ. Vì vậy, đối với mỗi cạnh tăng của Clocktín hiệu, dữ liệu từ Data Insẽ truyền qua một giai đoạn của DFF.

Câu hỏi của tôi là, vì Clockđược chia sẻ bởi tất cả các DFF, khi cạnh tăng đến, tất cả 4 DFF phải ở trạng thái được kích hoạt / minh bạch. Vậy điều gì đảm bảo rằng dữ liệu lan truyền qua only 1giai đoạn DFF chứ không phải 2 hoặc nhiều giai đoạn?

Hãy cùng nói nào:

  • Td là độ trễ nội bộ cho giai đoạn 1 DFF để tải dữ liệu từ D đến Q.
  • Trlà thời gian kéo dài của đồng hồ tăng cạnh. Xem pic dưới đây.

nhập mô tả hình ảnh ở đây

Tôi nghĩ để hạn chế việc nhân giống xuống 1 giai đoạn, nó phải là:

Td < Tr < Td*2

Tôi có đúng không?

Nhưng trong liên kết trên, nó nói:

Trong cấu hình này, mỗi flip-flop được kích hoạt cạnh. Flip-flop ban đầu hoạt động ở tần số đồng hồ nhất định. Mỗi lần lật tiếp theo giảm một nửa tần số của người tiền nhiệm của nó, làm tăng gấp đôi chu kỳ nhiệm vụ của nó . Kết quả là, phải mất gấp đôi thời gian để cạnh tăng / giảm để kích hoạt mỗi lần lật tiếp theo; điều này làm choáng đầu vào nối tiếp trong miền thời gian, dẫn đến đầu ra song song.

Nó làm tôi bối rối về một vài điều.

  • halves the frequencynghĩa là gì?
  • Làm thế nào một DFF có thể được đặc trưng với một tần số?
  • Không phải DFF chỉ hoạt động ở cạnh tăng của đồng hồ và nói chung không quan tâm đến tần số của đồng hồ ở đâu?
  • Và làm thế nào tần số có thể liên quan đến chu kỳ nhiệm vụ? Tần suất có liên quan đến thời gian trong khi chu kỳ nhiệm vụ chỉ có nghĩa là tỷ lệ phần trăm của một khoảng thời gian mà tín hiệu hoặc hệ thống đang hoạt động . Tôi thấy không có mối quan hệ giữa tần số và chu kỳ nhiệm vụ.

THÊM 1

Như Neil_UK đã nói trong bài trả lời của mình dưới đây, trích dẫn wiki ở trên hoàn toàn sai. Và anh ấy đã sửa trang wiki.

Như EM Lĩnh đã nói trong bài trả lời của mình dưới đây,

... Không có gì có thể xảy ra nữa cho đến khi cạnh tăng lên tiếp theo của đồng hồ, vì cạnh đồng hồ đã làm công việc đã chết ...

Nói đúng ra, không có cạnh tăng thẳng đứng lý tưởng. Cần có một số Trnhư thể hiện trong hình minh họa ở trên. Tôi đoán để hạn chế việc truyền tín hiệu qua các giai đoạn DFF, cạnh tăng phải đủ dài để tín hiệu truyền qua một giai đoạn và đủ ngắn để tín hiệu không truyền qua giai đoạn tiếp theo.

Tôi chỉ nghĩ rằng loại kiểm soát này là quá phức tạp / tinh tế là đúng. Nhưng nếu nó là sự thật, làm thế nào nó đạt được? (Tôi vừa đặt tiền thưởng cho câu hỏi này.)


chính xác ý bạn là gì bởi "Tr là thời gian kéo dài của đồng hồ tăng cạnh"?
Elbehery

1
@Elbehery Cảm ơn bạn đã trả lời. Tôi đã thêm một minh họa. Vì đồng hồ được chia sẻ bởi tất cả các giai đoạn DFF, vì vậy trong suốt quá trình Tr, tôi nghĩ rằng tất cả các DFF nên minh bạch với đầu vào. Đó là lý do tại sao tôi nghĩ rằng cần phải kiểm soát tín hiệu có thể truyền đi bao xa.
smwikipedia

2
Bạn đã bị nhầm lẫn bởi một mục wikipedia dud. Xem câu trả lời của tôi và xem trang wikipedia được cập nhật (bạn có thể cần phải xóa bộ nhớ cache của trình duyệt để xem trang mới)
Neil_UK

Câu trả lời:


5

Câu hỏi của tôi là, vì Đồng hồ được chia sẻ bởi tất cả các DFF, khi cạnh tăng đến, tất cả 4 DFF phải ở trạng thái được kích hoạt / minh bạch. Vậy điều gì đảm bảo rằng dữ liệu lan truyền chỉ qua 1 giai đoạn DFF chứ không phải 2 giai đoạn trở lên?

Xem xét các yêu cầu về thời gian của một D Flip Flop điển hình .

Thời gian lật

Như bạn có thể thấy, có một số tham số; quan trọng nhất ở đây là thời gian thiết lập, thời gian giữđộ trễ lan truyền .

tsuth

Đối với phần đặc biệt này, thời gian giữ tối thiểu cần thiết là 3nsec. Đây là lượng thời gian tối thiểu mà đầu vào phải ổn định sau đồng hồ để có hiệu suất được đảm bảo (tức là D được chuyển sang Q)

Thời gian cài đặt và giữ

tsuth

tplhtphl

Từ biểu dữ liệu, chúng thường là 14 nsec:

trì hoãn nhân giống

Vì sự kiện này sẽ xảy ra ngoài yêu cầu về thời gian giữ, quá trình chuyển đổi này ở đầu vào D tiếp theo sẽ không có hiệu lực vì đầu vào hiện đang bị khóa bởi cơ chế phản hồi nội bộ một cách hiệu quả.

1tsu(min) +tprop(max)

Với điều kiện độ trễ lan truyền lớn hơn thời gian giữ, có thể bỏ qua tốc độ xung nhịp tối đa.

Vì vậy, điểm mấu chốt là cung cấp độ trễ lan truyền từ D đến Q lớn hơn thời gian giữ yêu cầu, một sự kiện đồng hồ đơn lẻ không thể truyền qua nhiều hơn một lần lật.

t0Q1


5

Liên kết wikipedia đó có một mô tả không chính xác, đó là cho một tầng chia cho 2 bộ đếm. Bây giờ tôi đã sửa lỗi mục Wikipedia để nó mô tả một thanh ghi thay đổi. Nó có thể không phải là mô tả tốt nhất (được thực hiện trong một phút), nhưng ít nhất nó không hoàn toàn sai!


2

Để thời gian hoạt động chính xác, thời gian giữ trên đầu vào D phải nhỏ hơn sau đó độ trễ lan truyền của flipflop trừ đi độ không đảm bảo của đồng hồ. Miễn là điều kiện này là đúng, dữ liệu mới từ flipflop trước đó sẽ không thay đổi cho đến khi giai đoạn tiếp theo chốt dữ liệu.

Đối với NXP 74HC74, chúng ta thấy từ bảng dữ liệu có thời gian giữ là 3ns trường hợp xấu nhất và độ trễ lan truyền thường là 14ns, do đó, độ lệch của đồng hồ lên đến 11ns sẽ không xảy ra sự cố (ở mức 5V) với các thời gian này. Tuy nhiên, lưu ý rằng độ trễ lan truyền là điển hình không phải là tối thiểu, do đó, tỷ suất lợi nhuận trên một phần cụ thể có thể chặt chẽ hơn nhiều, tuy nhiên vì những lý do khá rõ ràng, hầu hết các bảng lật D được thiết kế sao cho loại điều này hoạt động đúng lúc, vì cũng có thể rất nhanh có yêu cầu thời gian giữ ngắn hơn.


1

DFF không trong suốt, chúng hoạt động ở rìa của tín hiệu đồng hồ. Cạnh đồng hồ phải đủ nhanh để các mạch hoạt động tốt.

Một ví dụ đã được biểu diễn ở dưới:nhập mô tả hình ảnh ở đây

Giai đoạn đầu tiên hoạt động trong giai đoạn thấp của đồng hồ. Khi đồng hồ tăng, bộ biến tần được kết nối back-to-back đầu tiên (chốt) lưu trữ trạng thái hiện tại và đầu vào bị ngắt kết nối bởi cổng truyền sang trái nút X. Đồng thời, TG thứ hai trở nên trong suốt và điều khiển chốt thứ hai. Ngay khi đồng hồ xuống thấp một lần nữa, chốt thứ hai vẫn giữ nguyên giá trị.

Trong mạch lấy từ Wikipedia, các flip-flop tạo thành một thanh ghi thay đổi, tất cả chúng đều hoạt động ở cùng tần số. Chúng có thể được sử dụng làm bộ đếm hoặc bộ chia đồng hồ, tuy nhiên một cấu hình khác sẽ được sử dụng cho việc này.


Nhưng, làm thế nào bạn sẽ đạt được phi và phi_bar đối xứng 100%? Có lẽ bạn sẽ sử dụng một biến tần, dẫn đến ít nhất một độ trễ cổng giữa hai. Vì vậy, bây giờ cổng truyền đầu tiên của bạn có thể vượt qua '0' lâu hơn một chút so với '1' và cổng truyền thứ hai có thể vượt qua '1' lâu hơn một chút so với '0', do đồng hồ không đồng đều. Hiệu ứng tương tự xảy ra với các thiết bị phản hồi tristate. Ngoài ra còn có định tuyến kim loại giữa các điểm đồng hồ. Không có gì là chính xác. Vì vậy, phân tích lý tưởng này chỉ che giấu các vấn đề tồn tại trong cuộc sống thực. Imo
jbord39

@ jbord39 - Tất nhiên thời gian phải được xác minh. Làm đối xứng phi và phi_bar không quá khó. Nếu cần một biên độ lỗi, độ trễ có thể được đưa ra giữa hai TG. Định tuyến chỉ là địa phương và rất ngắn. Độ trễ thường được xác định sau khi chiết xuất ký sinh và cũng có thể được xác minh. Tất nhiên có nhiều thiết kế mạnh mẽ hơn, nhưng tôi đã thấy cái này trong các thư viện di động tiêu chuẩn.
Mario

Vâng, nó là trong các thư viện di động tiêu chuẩn mọi lúc, nó là DFF cơ bản nhất. Nhưng các đồng hồ hiếm khi được thực hiện để đối xứng. Độ trễ 10ps / biến tần là 'đủ tốt'. Công cụ đặc tính hóa sẽ nhận được sự khác biệt tăng / giảm và lặp lại chúng trong các bảng. Quan điểm của tôi là OP đưa ra một câu hỏi hoàn toàn hợp lý, điều này đã gây ra lỗi thực sự trong thiết kế. Thổi bay nó như 'ở cạnh tăng lên, nó ngay lập tức nắm bắt nó' là một sự đơn giản hóa tuyệt vời, nhưng không phải là một imo rất tốt khi câu hỏi liên quan đến sắc thái trong thời gian.
jbord39

@ jbord39 - Quan điểm của tôi là, thiết kế này có thể được thực hiện mạnh mẽ khi cần thiết. Nếu điều này gây ra lỗi trong thiết kế thì luồng thiết kế cần phải được sửa. Ngoài ra, tôi nghĩ rằng bạn đang đọc quá nhiều vào câu hỏi. Tuy nhiên, tôi thấy quan điểm của bạn.
Mario

1

Nói một cách đơn giản, không có gì để ngăn chặn tình huống bạn mô tả ngoại trừ kiến ​​thức của chính các nhà thiết kế khi xây dựng nó. Hãy nhớ rằng có một độ trễ hữu hạn giữa kích hoạt cạnh đồng hồ và thay đổi đầu ra, thường được gọi là clk-to-q hoặc clk-to-out.

Với DFF Kiểu Cổng Truyền thông thường (được sử dụng nhiều nhất trong CPU ngày nay) trong công nghệ ngày nay, rất có thể bạn sẽ gặp phải tình huống mà bạn mô tả. Nó được gọi là vi phạm giữ.

Trong thực tế, vi phạm nắm giữ là nguy hiểm nhất đối với chip kỹ thuật số. Nếu có vi phạm thiết lập, bạn có thể chỉ cần làm chậm đồng hồ cho đến khi đường dẫn chậm dừng không thành công. Nhưng, nếu có vi phạm giữ, thường không có gì để làm (trừ khi bạn đặt các biện pháp không an toàn như cạnh đồng hồ có thể di chuyển trên mỗi thanh ghi). Bởi vì chúng rất nguy hiểm nên việc đệm dữ dội để ngăn chặn mọi vi phạm nắm giữ là điều bình thường. Vì vậy, nếu bạn có đường dẫn chu kỳ (giả sử 400ps @ 2.5GHz) chỉ là flop-> flop; không có lý do để không ném vào khá nhiều bộ đệm. Điều này trong thực tế được khuyến khích.

Những người khác cũng tuyên bố rằng DFF không minh bạch. Điều này chắc chắn phụ thuộc vào DFF , hầu hết các VLSI FF ngày nay có độ trong suốt của một vài picos giây. Những người khác được sửa đổi một cách có chủ ý để duy trì sự minh bạch lâu hơn (thời gian mượn flip flop - cấp thêm thời gian để thiết lập và cũng buộc bạn phải giữ dữ liệu hợp lệ lâu hơn) bằng cách trì hoãn đồng hồ chủ so với nô lệ.

Nếu tín hiệu là nhảy flip flop, nó sẽ được coi là đường dẫn 0 chu kỳ. Điều này thường được coi là "vi phạm giữ", có nghĩa là dữ liệu không được giữ đủ lâu.

Thời gian thiết lập và giữ của mỗi lần lật là khác nhau. Nếu chúng được thiết kế để sử dụng trong một thanh ghi thay đổi, tôi gần như có thể đảm bảo với bạn rằng chúng sẽ có thời gian giữ âm (trì hoãn đồng hồ với chốt phụ so với chốt chính; khiến chốt chính đóng lại sớm hơn và không chuyển đổi trong một thời gian trước khi chốt nô lệ trở nên trong suốt). Hoặc là, hoặc clk-> trong số các flip flop này có thể dài hơn nhiều so với thời gian giữ. Hoặc họ chèn sự chậm trễ giữa các giai đoạn; hoặc trên đường dẫn dữ liệu hoặc đường dẫn đồng hồ (đảo ngược).

Nó rất đơn giản để khắc phục vấn đề này. Trong thực tế có rất nhiều, rất nhiều, rất nhiều cách để khắc phục vấn đề. Hai cái đơn giản: Chỉ cần chèn một độ trễ thích hợp giữa mỗi giai đoạn lật. Hoặc, đặt độ trễ giữa đồng hồ cho mỗi lần lật trong thanh ghi thay đổi; bắt đầu từ cuối cùng trong chuỗi. Điều này sẽ đảm bảo rằng mỗi lần lật sẽ lấy dữ liệu ổn định từ lần lật trước đó.


1

Sơ đồ này cho thấy logic của các cổng truyền và đảo ngược các cổng truyền ngay sau khi cạnh tăng tích cực của đồng hồ điều khiển chuỗi các công tắc có điện dung lưu trữ vừa đủ để cho phép một công tắc phản hồi chủ động giữ mức logic đó cách ly với đầu vào.

Ba (3) giai đoạn của D Flip flop được hiển thị bên dưới như một phần hoặc Đăng ký thay đổi có thể là Nối tiếp song song (SIPO) hoặc Nối tiếp trong nối tiếp (SISO)

Mặc dù đồng hồ được đảo ngược để điều khiển lưỡng cực của các cổng truyền, nhưng nó được hiển thị một cách tượng trưng như một điều khiển rơle để hiểu đơn giản.

sơ đồ

mô phỏng mạch này - Sơ đồ được tạo bằng CircuitLab


1

Đây thực sự là một câu hỏi rất hay! Để biết cách thức hoạt động của DFF tại đây , để biết thời gian và chuyển đổi đồng hồ, bạn sẽ tìm thấy câu trả lời ở đây có nội dung như sau

Hành động kích hoạt Schmitt trong đầu vào đồng hồ, làm cho mạch có khả năng chịu đựng cao đối với thời gian tăng và giảm xung nhịp chậm hơn.

Việc thực hiện hành động này của Schmitt sẽ loại bỏ tối đa khả năng di chuyển trong quá trình chuyển đổi đồng hồ. Do đó, đồng hồ sẽ tăng một cách hợp lý chỉ một lần, làm cho kích hoạt kiểm tra trạng thái của nó chỉ một lần. Đối với tần số của các DFF đồng hồ thường có các giá trị tối thiểu và tối đa trong biểu dữ liệu của chúng để đảm bảo việc truyền tín hiệu đồng bộ trong các phần tử logic của nó.

Trong cấu hình SIPO, nhiệm vụ của bạn là đảm bảo độ trễ lan truyền qua DFF nhỏ hơn thời gian xung nhịp cộng với một số độ chùng để đảm bảo tín hiệu ổn định trong dây kết nối với đầu vào D của DFF tiếp theo.


0

Khi đầu vào đồng hồ của flip-flop loại "D" lên cao, Trạng thái của đầu vào D - ngay lúc đó - sẽ được chuyển sang đầu ra Q và Q sẽ vẫn ở trạng thái đó bất kể có thay đổi nào trong D cho đến khi tiếp theo cạnh cao của đồng hồ.

Mặt khác, một chốt trong suốt, hoạt động bằng cách có Q theo D trong khi đồng hồ ở mức cao, và sau đó chốt trạng thái của D vào Q ngay khi đồng hồ xuống thấp.

Trong mạch bạn hiển thị, đồng hồ song song với tất cả các dflop, do đó, một khi cạnh đồng hồ cao cấp xuất hiện và nội dung của D được chuyển sang Q - và do đó đến D của giai đoạn sau - không còn gì có thể xảy ra cho đến khi cạnh tăng tiếp theo của đồng hồ, vì cạnh đồng hồ đã làm công việc đã chết.

Sau đây là mạch của bạn được đưa vào cuộc sống với một số trình điều khiển và phản ứng của nó được minh họa bằng sơ đồ thời gian.

Lưu ý rằng trạng thái đầu ra của các giai đoạn trước được truyền qua các giai đoạn sau chỉ một lần cho mỗi cạnh đồng hồ tăng.

nhập mô tả hình ảnh ở đây


Cảm ơn vi đa trả lơi. Như bạn đã nói, ... không có gì có thể xảy ra nữa cho đến khi cạnh tăng tiếp theo của đồng hồ, vì cạnh đồng hồ đã làm công việc đã chết . Nói đúng ra, không có cạnh tăng thẳng đứng lý tưởng như Trtrong câu hỏi của tôi chỉ ra. Vì vậy, tôi đoán rằng cạnh tăng phải đủ dài để tín hiệu truyền qua một giai đoạn và đủ ngắn để tín hiệu không truyền qua giai đoạn tiếp theo. Tôi chỉ nghĩ rằng loại kiểm soát này là quá phức tạp / tinh tế là đúng. Nhưng nếu nó là sự thật, làm thế nào nó đạt được?
smwikipedia

0

Cách thức hoạt động là mỗi DFF được kích hoạt trong một khoảng thời gian rất ngắn. Để biến một chốt thành một flip-flop, bạn sử dụng một cái gì đó giống như mạch sau đây trên tín hiệu cho phép của nó. cạnh đồng hồ Đồng hồ được kết nối như đầu vào. Khi bạn có được cạnh tăng chỉ một xung rất ngắn được tạo ra. Giả sử ban đầu đồng hồ ở mức 0. Đầu ra của cổng KHÔNG vào cổng AND cao. Khi bạn nhận được cạnh tăng của đồng hồ, cả hai đầu vào của cổng AND đều ở mức cao, tạo ra tín hiệu cho phép cao của bạn. Tuy nhiên, ngay sau đó, đồng hồ cao truyền qua các cổng không và đầu ra của cổng AND trở lại thấp.

Bạn có thể tính thời gian này khá chính xác bằng cách chọn kích thước bóng bán dẫn trong cổng KHÔNG. Xung kích hoạt chỉ là độ dài phù hợp để tín hiệu thay đổi một lần trong thanh ghi thay đổi của bạn và không có nhiều lan truyền. Đây là quá trình phụ thuộc tất nhiên, và khá khó khăn để có được đúng.


1
Tôi phải không đồng ý với bạn về điều này. Việc thêm mạch đó vào một chốt chỉ làm cho nó trở thành "chốt xung": eetimes.com/document.asp?doc_id=1271447 Để chuyển đổi một chốt thành một flip flop (FF thật), bạn lấy hai chốt, đặt chúng trở lại và cung cấp cho họ đồng hồ pha ngược lại khi cho phép. Bạn có thể làm điều này với bất kỳ loại chốt. JK, D, SR, v.v; nó không thành vấn đề - sự khác biệt cơ bản giữa chốt và lật là trong cấu trúc liên kết chủ nô.
jbord39

1
Trên hết, nó chỉ đơn giản là không đúng sự thật. Các chốt xung được sử dụng, nhưng chúng phải bị lề rất nhiều vì bản chất năng động hơn của chúng. Ví dụ, làm thế nào bạn phải đảm bảo xung đủ dài để dữ liệu được ghi ở cả điện áp thấp và cao, trên tất cả các nhiệt độ và góc xử lý. Điều này chắc chắn là có thể, nhưng có lẽ khó hơn 3-5 lần so với một cú lật chủ nô truyền thống.
jbord39
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.