Hi các bác,
Hôm nay mình chính thức mở tutorial về digital design. Hi vọng mọi người ủng hộ.
Tutorial này mình sẽ dựa theo quyển "Digital design and computer architecture" của Davis Harris. Các bác có thể download quyển sách này ở đây:
http://www.ebookee.com/Digital-Desig...re_161471.html
http://forum.esoft.in/e-books-tutori...hitecture.html
http://rapidshare.com/files/10016184...vid_Harris.rar
Mình đánh giá đây là một quyển comprehensive, basic, and easy to understand. Quyển sách này trình bày từ những cổng logic cơ bản đến thiết kế hoàn chỉnh vi xử lý. Mình biết ở VN cũng có dạy một số kiến thức cơ bản về digital design nên những kiến thức cơ bản mình sẽ nói rất nhanh. Ngoài ra mình cũng không phải là một translator để dịch toàn bộ quyển sách. Thay vào đó, mình sẽ trình bày những ý quan trọng để người đọc có thể nắm bắt. Nếu các bác muốn tìm hiểu kỹ thêm, muốn các chứng minh, giải thích thì có thể tham khảo sách. Đương nhiên mình cũng rất vui lòng trả lời mọi người.
Giữa quyển sách sẽ trình bày về VHDL, và Verilog. Về sau các bác cũng sẽ sử dụng 2 ngôn ngữ này để thiết kế vi xử lý. Mình sẽ đưa lên mạng phần mềm Questasim của Mentor Graphics. Questasim có thể coi là phần mở rộng của Modelsim vì ngoài khả năng chạy mô phỏng, nó còn cho phép thực hiện assertion verification. Ngày xưa mình cũng biết làm cái này nhưng bây giờ quên hết rồi. Một phần là khi làm việc trong công ty bị áp lực thời gian nên chỉ tập trung viết code cho nhanh, quên hết assertion. Thật sự mình thích NCsim của Cadence hơn nhưng Questasim chạy trên Win nên sẽ dễ dàng với nhiều bác ở đây. Mình sẽ hướng dẫn các bác cài đặt, và tạo license file.
I. (Tham khảo trang 9 sách) Nói đến digital design đương nhiên phải nói đến số. Ở đây chip điện tử sử dụng số nhị phân là 0, và 1 để từ đó tạo nên nhiều số lớn hơn. Ta có thể chuyển đổi các số nhị phân sang số thập phân ví dụ 1101=1*2^3+1*2^2+0*2^1+1*2^0=13. Bit đứng đầu trong số là Most Significant Bit (MSB) và bit đứng cuối là Least Significant Bit (LSB). Các số nhị phân có thể cộng lại với nhau theo cách cộng số thông thường (chắc mọi người biết rồi). Để mã hóa số âm người ta sử dụng kiểu Complementary 2. Với số dương, người ta thêm bit 0 vào trước MSB. Với số âm người ta nghịch đảo giá trị của số dương và cộng thêm 1. Ví dụ 13="1101" khi chuyển sang loại complementary 2, 13="01101", và -13="10011".
Khi sử dụng comlementary 2, ta có thể cộng 2 số âm dương theo cách cộng thông thường. Khi thực hiện phép trừ tức là ta cộng với giá trị âm của số thứ 2 nên thứ tự thực hiện cũng là chuyển số thứ 2 sang giá trị âm rồi cộng lại. Ví dụ 13-5="01101"-"00101"="01101"+"11011"="01000"=8
II Cổng logic. (Sách trang 19, các bác xem symbol các cổng trong sách, mình không vẽ ở đây)
Not, Buf, And, Or, Nand, Nor, Xor... Chắc mọi người cũng đã biết nên mình không nói nhiều. Một điểm lưu ý nhỏ, Buf không có chức năng logic nhưng nó cho phép làm mạnh tín hiệu để có thể nối đến nhiều cổng phía sau, hoặc làm driver cho những cổng lớn, hoặc để truyền tín hiệu đi xa.
Để xác định giá trị 0, 1 người ta sử dụng mức điện áp, thông thường nguồn(VDD) là 1, và đất(0) là 0. Trong hình 1.25 trang 25, có vẽ transfer function của cổng NOT về lý thuyết và thực tế. Trong hình thực tế, khi điện áp đầu vào ở giá trị VIH, và VIL, đạo hàm của điện áp ra là -1, và giá trị của điện áp ra là VOL, và VOH. Người ta quy định mức điện áp từ 0 đến VIL là mức 0 (VIL bắt đầu xảy ra chuyển mạch), và mức điện áp từ VIH đến VDD là 1 (VIH bắt đầu xảy ra chuyển mạch). Noise margin được định nghĩa như sau: NML=VIL-VOL (tức là từ mức đầu ra là 0 cho đến ngưỡng vẫn được coi là 0), NMH=VOH-VIH. (Hình 23 trang 24). Trong phần tiếp theo sách giới thiệu về CMOS, transistor, và các cổng logic được thực hiện bằng transistor. Mình sẽ giới thiệu kỹ về phần này khi nói về VLSI. Để đơn giản các bác cứ coi transistor như một switch (hình 1.31 trang 30), và từ switch này người ta thiết kế một loạt gate logic như hình 32, 33, 35, 36. Nguyên tắc của loại này là các PMOS được nối lên nguồn, khi chuyển mạch sẽ nối nguồn với đầu ra và đưa ra giá trị 1, các NMOS được nối với đất, khi chuyển mạch sẽ nối đất với đầu ra và đưa ra giá trị 0. Phần này mình cũng sẽ nói rõ hơn khi làm về VLSI, nhưng các bác có thể tham khảo thêm sách.
Các mạch logic tiêu thụ 2 loại công suất Dynamic power và Static power. Dynamic power tiêu thụ trong quá trình chuyển mạch. Giả sử đầu ra chuyển trạng thái từ 0 lên 1, đầu ra sẽ được kết nối với nguồn và tụ ký sinh đầu ra sẽ được nạp lên giá trị của nguồn. Tụ ký sinh này có thể là do đường kết nối, hay đầu vào của các logic gate khác. Khi mạch chuyển về 0, tụ này sẽ xả điện. Như vậy công suất tiêu thụ mô tả trong công thức 1.4 (trang 34). Ngoài ra còn có static power là công suất tiêu thụ do dòng điện cố định trong mạch ví dụ leakage current trong CMOS logic quiescent current trong CML logic. P=I*V (công thức 1.5 trang 34).
Cheers.
Hôm nay mình chính thức mở tutorial về digital design. Hi vọng mọi người ủng hộ.
Tutorial này mình sẽ dựa theo quyển "Digital design and computer architecture" của Davis Harris. Các bác có thể download quyển sách này ở đây:
http://www.ebookee.com/Digital-Desig...re_161471.html
http://forum.esoft.in/e-books-tutori...hitecture.html
http://rapidshare.com/files/10016184...vid_Harris.rar
Mình đánh giá đây là một quyển comprehensive, basic, and easy to understand. Quyển sách này trình bày từ những cổng logic cơ bản đến thiết kế hoàn chỉnh vi xử lý. Mình biết ở VN cũng có dạy một số kiến thức cơ bản về digital design nên những kiến thức cơ bản mình sẽ nói rất nhanh. Ngoài ra mình cũng không phải là một translator để dịch toàn bộ quyển sách. Thay vào đó, mình sẽ trình bày những ý quan trọng để người đọc có thể nắm bắt. Nếu các bác muốn tìm hiểu kỹ thêm, muốn các chứng minh, giải thích thì có thể tham khảo sách. Đương nhiên mình cũng rất vui lòng trả lời mọi người.
Giữa quyển sách sẽ trình bày về VHDL, và Verilog. Về sau các bác cũng sẽ sử dụng 2 ngôn ngữ này để thiết kế vi xử lý. Mình sẽ đưa lên mạng phần mềm Questasim của Mentor Graphics. Questasim có thể coi là phần mở rộng của Modelsim vì ngoài khả năng chạy mô phỏng, nó còn cho phép thực hiện assertion verification. Ngày xưa mình cũng biết làm cái này nhưng bây giờ quên hết rồi. Một phần là khi làm việc trong công ty bị áp lực thời gian nên chỉ tập trung viết code cho nhanh, quên hết assertion. Thật sự mình thích NCsim của Cadence hơn nhưng Questasim chạy trên Win nên sẽ dễ dàng với nhiều bác ở đây. Mình sẽ hướng dẫn các bác cài đặt, và tạo license file.
I. (Tham khảo trang 9 sách) Nói đến digital design đương nhiên phải nói đến số. Ở đây chip điện tử sử dụng số nhị phân là 0, và 1 để từ đó tạo nên nhiều số lớn hơn. Ta có thể chuyển đổi các số nhị phân sang số thập phân ví dụ 1101=1*2^3+1*2^2+0*2^1+1*2^0=13. Bit đứng đầu trong số là Most Significant Bit (MSB) và bit đứng cuối là Least Significant Bit (LSB). Các số nhị phân có thể cộng lại với nhau theo cách cộng số thông thường (chắc mọi người biết rồi). Để mã hóa số âm người ta sử dụng kiểu Complementary 2. Với số dương, người ta thêm bit 0 vào trước MSB. Với số âm người ta nghịch đảo giá trị của số dương và cộng thêm 1. Ví dụ 13="1101" khi chuyển sang loại complementary 2, 13="01101", và -13="10011".
Khi sử dụng comlementary 2, ta có thể cộng 2 số âm dương theo cách cộng thông thường. Khi thực hiện phép trừ tức là ta cộng với giá trị âm của số thứ 2 nên thứ tự thực hiện cũng là chuyển số thứ 2 sang giá trị âm rồi cộng lại. Ví dụ 13-5="01101"-"00101"="01101"+"11011"="01000"=8
II Cổng logic. (Sách trang 19, các bác xem symbol các cổng trong sách, mình không vẽ ở đây)
Not, Buf, And, Or, Nand, Nor, Xor... Chắc mọi người cũng đã biết nên mình không nói nhiều. Một điểm lưu ý nhỏ, Buf không có chức năng logic nhưng nó cho phép làm mạnh tín hiệu để có thể nối đến nhiều cổng phía sau, hoặc làm driver cho những cổng lớn, hoặc để truyền tín hiệu đi xa.
Để xác định giá trị 0, 1 người ta sử dụng mức điện áp, thông thường nguồn(VDD) là 1, và đất(0) là 0. Trong hình 1.25 trang 25, có vẽ transfer function của cổng NOT về lý thuyết và thực tế. Trong hình thực tế, khi điện áp đầu vào ở giá trị VIH, và VIL, đạo hàm của điện áp ra là -1, và giá trị của điện áp ra là VOL, và VOH. Người ta quy định mức điện áp từ 0 đến VIL là mức 0 (VIL bắt đầu xảy ra chuyển mạch), và mức điện áp từ VIH đến VDD là 1 (VIH bắt đầu xảy ra chuyển mạch). Noise margin được định nghĩa như sau: NML=VIL-VOL (tức là từ mức đầu ra là 0 cho đến ngưỡng vẫn được coi là 0), NMH=VOH-VIH. (Hình 23 trang 24). Trong phần tiếp theo sách giới thiệu về CMOS, transistor, và các cổng logic được thực hiện bằng transistor. Mình sẽ giới thiệu kỹ về phần này khi nói về VLSI. Để đơn giản các bác cứ coi transistor như một switch (hình 1.31 trang 30), và từ switch này người ta thiết kế một loạt gate logic như hình 32, 33, 35, 36. Nguyên tắc của loại này là các PMOS được nối lên nguồn, khi chuyển mạch sẽ nối nguồn với đầu ra và đưa ra giá trị 1, các NMOS được nối với đất, khi chuyển mạch sẽ nối đất với đầu ra và đưa ra giá trị 0. Phần này mình cũng sẽ nói rõ hơn khi làm về VLSI, nhưng các bác có thể tham khảo thêm sách.
Các mạch logic tiêu thụ 2 loại công suất Dynamic power và Static power. Dynamic power tiêu thụ trong quá trình chuyển mạch. Giả sử đầu ra chuyển trạng thái từ 0 lên 1, đầu ra sẽ được kết nối với nguồn và tụ ký sinh đầu ra sẽ được nạp lên giá trị của nguồn. Tụ ký sinh này có thể là do đường kết nối, hay đầu vào của các logic gate khác. Khi mạch chuyển về 0, tụ này sẽ xả điện. Như vậy công suất tiêu thụ mô tả trong công thức 1.4 (trang 34). Ngoài ra còn có static power là công suất tiêu thụ do dòng điện cố định trong mạch ví dụ leakage current trong CMOS logic quiescent current trong CML logic. P=I*V (công thức 1.5 trang 34).
Cheers.
Comment