Trong thực tế mạch ghi dịch / thanh ghi dịch được ứng dụng nhiều, ngoài các ứng dụng điện tử thì trong điện công nghiệp cũng sử dụng rộng rãi như đếm sản phẩm, loại sản phẩm lỗi trên dây truyền mà vị trí sensor và vị trí bộ phận chấp hành không ở cùng một điểm.
Đại đa số các mạch/thanh ghi dịch đều dùng các ic điện tử. Loại này nếu ứng dụng sẽ mất nhiều thời gian gia công mạch với một loạt vấn đề chống nhiễu, cách ly vv… mà chưa chắc đã đảm bảo độ bền hơn nữa thay thế cũng khó khăn.
Trong các PLC cũng đã tích hợp mạch này nhưng giá thành đắt vậy nếu làm được mạch ghi dịch chỉ sử dụng relay sẽ giải quyết được tất cả, lập trình vào các mạch tích hợp đơn giản như Logo hoắc Zen cũng dễ
tìm mãi không ra mất mấy tiếng suy nghĩ mình cũng làm ra xin chia sẻ cùng các bạn. Nếu ai có ý tưởng hay hơn mong các bạn chia sẻ để mọi người cùng biết.
Thật ra mạch ghi dịch là mạch được kết hợp nhiều con FF – D lại với nhau và nếu dùng relay tạo thành con FF – D là đây các bạn ạ
Nguồn: Le Thi Bich
Nguyên lý hoạt động mạch ghi dịch
Thanh ghi dịch hay Shift register là mạch được lập ra bằng chuỗi các flip-flop kiểu D đồng bộ, có kết nối xác định để sau mỗi nhịp clock thì mảng bit nhớ dịch chuyển.
Chuỗi các flip-flop kiểu D đồng bộ chia sẻ chung xung nhịp clock, trong đó ngõ ra của flip-flop này được kết nối tới ngõ vào dữ liệu của flip-flop kế tiếp trong chuỗi.
Kết quả là tại mỗi khi clock ở ngõ vào nhịp thay đổi, mảng bit nhớ trong mạch dịch một bước, dữ liệu ở ngõ vào ngõ vào dữ liệu (Data In) được dịch vào mảng, còn dữ liệu cuối cùng thì dịch ra.[1]
Một cách tổng quát thì thanh ghi dịch là đa chiều, dữ liệu từ flip-flop bên trong có thể được lấy ra ở dạng song song nếu bố trí chân nối khi chế tạo IC. Cho nên nó có thể cấu hình là:
Dạng ‘serial-in, parallel-out’ (SIPO) hoặc là ‘parallel-in, serial-out’ (PISO).
Hướng dịch L→R hoặc là R→L.
Nối vòng: Nối lối ra Q4 hoặc Q4 về Data In để tạo ra thanh ghi dịch vòng (circular shift register), còn gọi là mạch đếm vòng (Ring counter).
Một số IC ghi dịch
Nhận thấy rằng các ghi dịch mô tả ở trên đều dùng các FF rời, rồi phải thêm nhiều cổng logic phụ để tạo các loại SR khác nhau. Trong thực tế ghi dịch được tích hợp sẵn các FF và đã nối sẵn nhiều đường mạch bên trong; người sử dụng chỉ còn phải làm một số đường nối bên ngoài điều khiển các ngõ cho phép thôi. Các SR cũng được tích hợp sẵn các chức năng như vừa có thể dịch trái dịch phải vừa vào nối tiếp vừa nạp song song. Ở đây là một số ghi dịch hay được dùng :
7494 : 4bit vào song song, nối tiếp; ra nối tiếp
7495/LS95 : 4 bit, vào song song/nối tiếp; ra song song; dịch chuyển trái phải
7495/LS96 : 5 bit, vào nối tiếp/song song; ra song song nối tiếp
74164/LS164 : 8 bit vào song song ra nối tiếp
74165/LS765 : 8 bit, vào song song/nối tiếp; ra nối tiếp bổ túc
74166/LS166 : 8 bit; vào song song/nối tiếp; ra nối tiếp; có thể nạp đồng bộ
74194/LS194 : 4 bit vào song song/nối tiếp; ra song song; nạp đồng bộ dịch chuyển trái phải
74195/LS195 : 4 bit, vào song/nối tiếp; ra song song; tầng đầu vào ở JK
74295/LS295 : như 74194/LS194 nhưng ra 3 trạng thái
74395/LS295 : 4 bit vào song song; ra song song 3 trạng thái
74LS671/672 : 4 bit có thêm chốt
74LS673/674 : 16 bit
Ứng dụng ghi dịch trong công nghệ thông tin
Thanh ghi dịch đóng vai trò cực kì quan trọng trong việc lưu trữ, tính toán số học và logic. Chẳng hạn trong các bộ vi xử lí, máy tính đều có cấu tạo các thanh ghi dịch; trong vi điều khiển (8051) cũng có các ghi dịch làm nhiều chức năng hay như trong nhân chia, ALU đã xét ở chương 2 ghi dịch cũng đã được đề cập đến. Ở đây không đi vào chi tiết mà chỉ nói khái quát ngắn gọn về ứng dụng của chúng.
Lưu trữ và dịch chuyển dữ liệu
Đây là ứng dụng cơ bản và phổ biến nhất của chúng. Ghi dịch n bit sẽ cho phép lưu trữ được n bit dữ liệu một thời gian mà chừng nào mạch còn được cấp điện. Hay nói cách khác dữ liệu khi dịch chuyển đã được trì hoãn một khoảng thời gian, nó tuỳ thuộc vào :
– Số bit có thể ghi dịch (số tầng FF cấu tạo nên ghi dịch)
– Tần số xung đồng hồ
Tạo kí tự hay tạo dạng song điều khiển
Ta có thể nạp vào ghi dịch, theo cách nạp nối tiếp hay song song, một mã nhị phân của một chữ nào đó (A, B, …) hay một dạng sóng nào đó. Sau đó nếu ta nối ngõ ra nối tiếp của ghi dịch vòng trở lại ngõ vào nối tiếp thì khi có xung ck các bit sẽ dịch chuyển vòng quanh theo tốc độ của đồng hồ. Cách này có thể điều khiển sáng tắt của các đèn (sắp xếp trên vòng tròn hay cách nào khác) Như mô phỏng sau là dạng sáng tắt của đèn led. Với tải cổng suất thì cần mạch giao tiếp công suất như thêm trans, rờ le, SCR,… đã nói ở chương 1 cũng sẽ được dùng. Cũng có thể tạo ra dạng sóng tín hiệu tuần hoàn cho mục đích thử mạch bằng cách này. Ta có thể thay đổi dạng sóng bằng cách thay đổi mã số nhị phân nạp cho ghi dịch, và thay đổi tần số xung kích ck được cấp từ mạch dao động ngoài từ 0 đến 200MHz tuỳ loại mạch ghi dịch.
Chuyển đổi dữ liệu nối tiếp sang song song và ngược lại
Các máy tính hay các bộ vi xử lí khi giao tiếp với nhau hay với các thiết bị ngoài thường trao đổi dữ liệu dạng nối tiếp khi giữa chúng có một khoảng cách khá xa. Ngoài cách dùng các bộ dồn kênh tách kênh ở 2 đầu truyền mà ta đã nói ở chương 2 thì ghi dịch cũng có thể được dùng. Các ghi dịch chuyển song song sang nối tiếp sẽ thay thế cho mạch dồn kênh và các ghi dịch chuyển nối tiếp sang song song sẽ thay thế cho mạch tách kênh. Bên cạnh ghi dịch, cũng cần phải có các mạch khác để đồng bộ, chống nhiễu, rò sai… nhằm thực hiện quá trình truyền nối tiếp hiệu quả.
Bus truyền dữ liệu
Bây giờ liệu với 8 đường dữ liệu song song vừa nhận được từ tách kênh đó (còn gọi là 1 byte), ta có thể dùng chung cho nhiều mạch được không? Sở dĩ có yêu cầu đó là vì trong máy vi tính có rất nhiều mạch liên kết với nhau bởi các đường dữ liệu địa chỉ gồm nhiều bit dữ liệu 8, 16, 32… mà ta đã biết đến nó với cái tên là bus. Vậy bus chính là các đường dữ liệu dùng chung cho nhiều mạch (chẳng hạn bus giữa các vi xử lí, các chíp nhớ bán dẫn, các bộ chuyển đổi tương tự và số,…
Chỉ có một đường bus mà lại dùng chung cho nhiều mạch, do đó để tránh tranh chấp giữa các mạch thì cần phải có một bộ phận điều khiển quyết định cho phép mạch nào được thông với bus, các mạch khác bị cắt khỏi bus. Vậy ở đây thanh ghi hay các bộ đệm 3 trạng thái được dùng
Hình dưới minh hoạ cho đường bus 8 bit nối giữa vi xử lí với bộ đếm 8 bit, bàn phím, và bộ 8 nút nhấn
Giả sử rằng cả thiết bị đều cần giao tiếp với vi xử lí, nhưng chỉ có một đường truyền nếu tất cả đồng loạt đưa lên thì có thể bị ảnh hưởng lẫn nhau giữa các dữ liệu, và thông tin nhận được là không chính xác. Do đó ở đây vi xử lí sẽ quyết định: chẳng hạn nó đặt ngõ OE1 cho phép bộ đếm cho mạch đếm đưa dữ liệu lên bus còn chân OE2 và OE3 ngưng làm dữ liệu từ bàn phím và nút nhấn bị ngắt (chờ) tức ngõ ra các bộ đệm hay thanh ghi 3 trạng thái ở trạng thái tổng trở cao. Tương tự khi vi xử lí cần giao tiếp với các mạch khác. Với tốc độ xử lí hàng trăm hàng ngàn MHz thì việc dữ liệu phải chờ là không đáng kể do đó giữa các thiết bị giao tiếp với nhau rất nhanh và dường như đồng thời.