báo cáo giữa kỳ môn thiết kế vi mạch thiết kế mạch cộng trừ nhân so sánh 4 bit có chuyển chế độ bằng một nút nhấn

31 0 0
báo cáo giữa kỳ môn thiết kế vi mạch thiết kế mạch cộng trừ nhân so sánh 4 bit có chuyển chế độ bằng một nút nhấn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ĐIỆN - ĐIỆN TỬ

Trang 2

BẢNG PHÂN CÔNG NHIỆM VỤ

Trang 4

DANH MỤC HÌNH ẢNH

Hình 1 Sơ đồ khối Topmodule: mạch cộng, trừ, nhân, so sánh 2 số nhị phân 4

bit có thể chuyển chế độ 8

Hình 2 Bộ cộng toàn phần 5

Hình 3 Cấu tạo của bộ cộng toàn phần 1 bit 9

Hình 4 Cấu tạo Khối mạch cộng 2 số nhị phân 4 bit 10

Hình 5 Kết quả Testbench của khối mạch cộng 2 số nhị phân 4 bit 10

Hình 6 Cấu tạo của Khối mạch trừ 2 số nhị phân 4 bit 11

Hình 7 Kết quả Testbench của khối mạch trừ 2 số nhị phân 4 bit 12

Hình 8 Cấu tạo bên trong của Khối mạch nhân 2 số nhị phân 4 bit 13

Hình 9 Kết quả Testbench của Khối nhân 2 số nhị phân 4 bit 14

Hình 10 Sơ đồ khối bộ so sánh 1 bit 15

Hình 11 Cấu tạo bên trong của bộ so sánh 1 bit 15

Hình 12 Cấu tạo bên trong của Khối mạch so sánh 2 số nhị phân 4 bit 16

Hình 13 Kết quả Testbench của Khối mạch so sánh 2 số nhị phân 4 bit 16

Hình 14 a) FF-D chỉ có chân Set tích cực mức cao 17

Hình 15 Cấu tạo Khối mạch đếm vòng 4 bit 17

Hình 16 Kết quả Testbench của Khối mạch đếm vòng 4 bit 18

Hình 17 Sơ đồ khối chi tiết của Topmodule 19

Hình 18 Kết quả Testbench của Topmodule ở chế độ cộng, trừ, nhân 20

Hình 19 Kết quả Testbench của Topmodule ở chế độ so sánh 20

Trang 5

DANH MỤC BẢNG

Bảng 1 Bảng giá trị của bộ cộng toàn phần 9 Bảng 2: Bảng giá trị của Mạch so sánh 2 số nhị phân 1 bit 15

Trang 6

A PHẦN MỞ ĐẦU

Trong thời đại công nghệ số ngày nay, việc thiết kế và xây dựng các hệ thống số đóng vai trò quan trọng trong nhiều lĩnh vực từ điện tử tiêu dùng đến các hệ thống tự động hóa công nghiệp Rất nhiều chip điện tử (vi mạch số) đã được nghiên cứu và sản xuất để phục vụ cho những vấn đề trên Trong đó không thể không kể đến những khối cơ bản và thiết yếu của hệ thống số như mạch cộng, trừ, nhân, so sánh… Các mạch này không chỉ hỗ trợ các phép toán cơ bản mà còn là nền tảng cho việc thực hiện các thuật toán phức tạp hơn trong xử lý số liệu và logic máy tính

Vì những lí do trên, nhóm em muốn thiết kế một hệ thống bao gồm các khối mạch cộng, trừ, nhân và so sánh Các mạch cơ bản này mặc dù đã quá quen thuộc đối với chúng ta, tuy nhiên việc thiết kế mạch có thể sẽ gặp phải nhiều thách thức như: tối ưu hóa kích thước, tốc độ xử lý, tính chính xác,… Để giải quyết những vấn đề này, việc sử dụng ngôn ngữ mô tả phần cứng như Verilog trở nên cần thiết, cho phép mô phỏng và kiểm tra mạch trước khi thực hiện sản xuất thực tế

Trong bài báo cáo này, chúng em sẽ trình bày ngắn gọn về quá trình thiết kế, mô phỏng, kiểm tra một vi mạch số có khả năng thực hiện các phép cộng, trừ, nhân và so sánh hai số nhị phân 4 bit sử dụng Verilog Sau đó khám phá cách thức tối ưu hóa mạch để đạt được hiệu suất cao, đồng thời đảm bảo tính chính xác và độ tin cậy của hệ thống khi được hoạt động theo nhiều yêu cầu khác nhau

Trang 7

B PHẦN NỘI DUNG

1 Tổng quan về mạch cộng, trừ, nhân, so sánh 2 số nhị phân có thể chuyển chế độ

Mạch được cấu tạo cơ bản bao gồm 5 khối chính như sau :

• Khối mạch cộng hai số A và B (4 bit)

• Khối mạch trừ số A cho số B (4 bit)

• Khối mạch nhân 2 số A và B (4 bit)

• Khối mạch so sánh 2 số A và B (4 bit)

• Khối mạch đếm vòng 4 bit dùng để chuyển chế độ

Trang 8

Sau khi thực hiện ghép các khối con (submodule) trên ta sẽ được một khối lớn (topmodule) có 4 ngõ vào (2 ngõ vào A, B 4bit, ngõ vào nút BTN và RES) và 5 ngõ ra (ngõ ra O 8bit, 1 ngõ ra bit dấu, 3 ngõ ra so sánh: A>B, A<B, A=B)

Hình 1 Sơ đồ khối Topmodule: mạch cộng, trừ, nhân, so sánh 2 số nhị phân 4 bit có thể chuyển chế độ

Trang 9

2 Triển khai thiết kế từng khối chức năng trong hệ thống 2.1 Khối mạch cộng

Bộ cộng toàn phần 1 bit

Trong đó :

• Cin : số nhớ của lần cộng trước đó • Cout : số nhớ của lần cộng hiện tại • S : tổng của 2 số A, B (1 bit )

Ta có bảng giá trị của mạch cộng toàn phần 1 bit như sau:

Từ bảng trạng thái trên ta viết được phương trình và xây dựng được khối mạch cộng toàn phần 1 bit từ các cổng logic:

S = A⊕B⊕Cin Cout = (A+B).Cin + A.B

Hình 2 Bộ cộng toàn phần

Bảng 1 Bảng giá trị của bộ cộng toàn phần

Hình 3 Cấu tạo của bộ cộng toàn phần 1 bit

Trang 10

Hình 5 Kết quả Testbench của khối mạch cộng 2 số nhị phân 4 bit

Mạch cộng toàn phần 4 bit

Ta kết nối 4 khối cộng toàn phần 1 bit thành 1 khối cộng toàn phần 4 bit Để cho phép thực hiện chế độ cộng 4 bit, ta sẽ cho thêm một ngõ vào E tích cực mức cao kết nổi cổng AND với các ngõ ra như Hình Khi ngõ vào E mức 0, bất chấp các ngõ vào thì ngõ ra S vẫn bằng 0 Khi ngõ vào E tích cực mức 1, ngõ ra S sẽ hiển thị kết quả cộng từ 2 số nhị phân 4 bit A và B

Kết quả Testbench

Testcase 1: ngõ vào E ở mức 0, cho dù giá trị A, B có bằng bao nhiêu thì ngõ ra S vẫn ở giá trị là 0 Như trong testbench thì lúc này ngõ vào A là 12 và B là 3 thì ngõ ra S luôn ở mức 0

Testcase 2: ta cho ngõ vào E lên mức 1 Lúc này như trong testbench cứ mỗi 100 ns ta lại thay đổi giá trị của 2 số hạng A và B lần lượt là 6 và 4; 7 và 7; 14 và 15 thì ngõ ra S ở mỗi 100 ns lần lượt bằng 10, 14, 29 Kết quả ngõ ra S

Trang 11

Như vậy kết quả testbench đã cho thấy mạch thực hiện đúng chức năng, yêu cầu của khối mạch cộng 2 số 4 bit

2.2 Khối mạch trừ

Nhờ vào phương pháp trừ 2 số nhị phân bằng cách cộng với bù 2:

Ta sẽ thiết kế được mạch trừ nhờ vào mạch cộng 2 số nhị phân 4 bit như sau:

Để tạo bộ trừ 4 bit ta sử dụng 2 bộ cộng 4 bit với các ngõ vào: • A: số trừ và B: số bị trừ

• Co : bit nhớ Các ngõ ra:

• Bit dấu: C4 = 1 là dấu “+” Nếu C4 = 0 là dấu “-” • M: giá trị của 2 số A trừ cho B

Hình 6 Cấu tạo của Khối mạch trừ 2 số nhị phân 4 bit

Trang 12

Kết quả Testbench

Testcase 1: ngõ vào E=0 nên bất chấp giá trị ngõ vào A và B, ngõ ra O luôn bằng 0

Testcase 2: ngõ vào E lên mức 1, ta cho A=15 và B=1 thì giá trị ngõ ra O là kết quả của A trừ cho B nên S=14

Testcase 3: ngõ vào E vẫn ở mức 1, vẫn giữ giá trị của A=15 còn B thay bằng 15, khi này kết quả ngõ ra S sẽ bằng 0

Testcase 4: ngõ ra E lại về 0, ngõ ra S cũng ở 0 bất chấp giá trị A, B Kết quả testbench cho thấy mạch chạy đúng chức năng của khối mạch trừ 2 số nhị phân 4 bit

Hình 7 Kết quả Testbench của khối mạch trừ 2 số nhị phân 4 bit

Trang 13

2.3 Khối mạch nhân

Tổng quát về các bước thực hiện mạch nhân 2 số nhị phân 4 bit

Mạch nhân cơ bản được cấu tạo từ các bộ cộng toàn phần 1 bit và các cổng AND Về việc thực hiện bài toán nhân có thể xem như gồm 2 bước:

• Tính các tích từng phần: thực hiện bởi các cổng AND

• Tính tổng của các tích từng phần: thực hiện bởi bộ cộng toàn phần 1 bit và áp dụng bài toán chuỗi số

Bộ nhân sẽ có a3, a2, a1, a0; b3, b2, b1, b0 là ngõ vào tương ứng với 2 số nhị phân 4 bit A, B và ngõ ra 8 bit tương ứng với 8 chân P[7] đến P[0]

Để có thể cho phép thực hiện chế độ nhân ta cũng sẽ cho thêm 1 ngõ vào E tích cực mức cao bằng cách kết nối chân E với từng ngõ ra bằng cổng AND

Hình 8 Cấu tạo bên trong của Khối mạch nhân 2 số nhị phân 4 bit

Trang 14

Kết quả Testbench

Testcase 1: ngõ vào E lên mức 1, ta cho ngõ vào A=9 và B=1 Một số nào đó nhân với 1 sẽ ra chính nó nên lúc này ngõ ra P bằng 9

Testcase 2: ngõ vào E vẫn ở mức 1, ta cho A=0 và B=7 để kiểm tra một

số nhân với 0 Ngõ ra P lúc này bằng 0

Testcase 3: ngõ vào E vẫn ở mức 1, ta cho A= 10 và B=11 để kiểm tra một số nhân với 10 Ngõ ra lúc này bằng 110 đúng với mong muốn

Testcase 4: ngõ vào E vẫn ở 1, lúc này ta kiểm tra 2 số A và B lớn nhất (trong số nhị phân 4 bit) là A=B=15 nhân với nhau thì ngõ ra P bằng 225

Testcase 5: ngõ vào E bằng 0, bất chấp ngõ vào A, B thì ngõ ra P luôn bằng 0

Vậy kết quả Testbench đã cho thấy mạch chạy đúng chức năng của khối mạch nhân 2 số nhị phân 4 bit

Hình 9 Kết quả Testbench của Khối nhân 2 số nhị phân 4 bit

Trang 15

2.4 Khối mạch so sánh

Mạch so sánh 2 số 1 bit

Trong đó :

• Ngõ ra S: sẽ lên 1 nếu 2 bit được so sánh a>b • Ngõ ra G: sẽ lên 1 nếu 2 bit được so sánh a=b • Ngõ ra I: sẽ lên 1 nếu 2 bit được so sánh a<b Ta có bảng giá trị của mạch so sánh 1 bit như sau:

Từ bảng trạng thái trên ta viết được phương trình và xây dựng được khối mạch so sánh 1 bit từ các cổng logic như sau:

Bảng 2: Bảng giá trị của Mạch so sánh 2 số nhị phân 1 bit Hình 10 Sơ đồ khối bộ so sánh 1 bit

Hình 11 Cấu tạo bên trong của bộ so sánh 1 bit

Trang 16

Mạch so sánh 2 số nhị phân 4 bit

Kết quả Testbench

Testcase 1: ngõ vào E lên mức 1, ta cho 2 số nhị phân A=15 và B=13 Vì A>B nên ngõ ra ở greater sẽ lên mức 1 và các ngõ ra còn lại xuất ra mức 0

Testcase 2: ngõ vào E vẫn ở mức 1, lúc này ta cho A= 11 và B=14 để

A<B nên ngõ ra ở less sẽ lên mức 1 và các ngõ ra còn lại ở mức 0

Testcase 3: ngõ vào E vẫn ở mức 1, lúc này ta cho A= 8 và B=8 để A=B khi đó ngõ ra ở equal sẽ lên mức 1 và các ngõ ra còn lại sẽ là mức 0

Testcase 4: ngõ vào E về 0, lúc này bất chấp A và B thì 3 ngõ ra greater, less và equal luôn bằng 0

Qua kết quả cho thấy mạch thực hiện đúng chức năng của khối so sánh 2

số 4 bit

Hình 12 Cấu tạo bên trong của Khối mạch so sánh 2 số nhị phân 4 bit

Hình 13 Kết quả Testbench của Khối mạch so sánh 2 số nhị phân 4 bit

Trang 17

2.5 Khối mạch đếm vòng

Mạch đếm vòng 4 bit có cấu tạo cơ bản là một thanh ghi dịch dùng Flip-Flop D với ngõ ra tầng sau cùng được đưa về ngõ vào của tầng đầu Nhưng khi mới cấp nguồn cho mạch chạy, ta không biết bit 1 nằm ở ngõ ra của tầng nào Do đó cần phải thiết lập dữ liệu dịch chuyển ban đầu bằng cách dùng ngõ vào Pre và Clr để đặt trước số đếm, trạng thái ban đầu sẽ là 1000 nên FF-D đầu tiên sẽ được set lên 1 và 3 FF-D còn lại clear về 0 Để có thể thiết kế được mạch được nêu như trên ta tiến hành thiết kế 2 loại FF-D với 2 chức năng khác nhau:

• FF-D 1 chỉ có chân Set tích cực mức cao • FF-D 2 chỉ có chân Clr tích cực mức cao

Bằng cách dùng 1 FF-D 1 và 3 FF-D 2, kết nối 4 FF-D trên như hình ta sẽ được 1 khối mạch đếm vòng 4 bit hoàn chỉnh:

Hình 15 Cấu tạo Khối mạch đếm vòng 4 bit Hình 14 a) FF-D chỉ có chân Set tích cực mức cao

b)FF-D chỉ có chân Reset tích cực mức cao

Trang 18

Kết quả Testbench

Mặc định ban đầu ta cho ngõ vào RES lên 1 xung để ngõ ra Q0 lên 1, các ngõ ra khác là 0 Mỗi khi có xung Ck cạnh xuống thì ngõ ra Q kế tiếp sẽ lên 1 và các ngõ ra khác sẽ là 0 Như vậy cứ sau 4 nhịp xung Ck cạnh xuống mạch đã thực hiện xong 1 chu trình đếm vòng và cứ thế lặp lại

Nhìn vào kết Testbench cho thấy mạch đã chạy đúng theo chức năng của khối mạch đếm vòng 4 bit

Hình 16 Kết quả Testbench của Khối mạch đếm vòng 4 bit

Trang 19

3 Hoàn thiện mạch cộng, trừ, nhân, so sánh có thể chuyển chế độ 3.1 Liên kết các khối

Sau khi hoàn thiện tất cả các khối con (submodule), ta tiến hành ghép chúng lại như sau: Các mạch cộng, trừ, nhân và so sánh sẽ có chung 2 ngõ vào A, B (4 bit) Mỗi ngõ ra từ Q0 → Q3 của mạch đếm vòng sẽ kết nối tới từng chân Enable của mạch cộng, trừ, nhân, và so sánh Ngoài ra, các ngõ ra của mạch cộng, trừ, nhân sẽ được kết nối với các cổng OR để có chung ngõ ra Chi tiết được mô tả như trong Hình 17

Thực chất tất cả các khối đều hoạt động nhưng do mỗi ngõ ra Q của mạch đếm vòng được kết nối với chân E của mỗi mạch và các ngõ ra được kết nối chung với cổng OR (trừ mạch so sánh) nên ngõ ra Q nào của khối đếm vòng đang ở mức 1 thì ngõ ra O của Topmodule sẽ xuất ra kết quả của mạch được nối

Hình 17 Sơ đồ khối chi tiết của Topmodule

Trang 20

chân E với ngõ ra Q đó Riêng ngõ ra bit Dấu chỉ được tính khi mạch đang thực hiện chế độ trừ (ngõ ra bit Dấu bằng 1 biểu diễn số dương, bằng 0 thì là số âm).

3.2 Kết quả Testbench của Topmodule

Hình 18 Kết quả Testbench của Topmodule ở chế độ cộng, trừ, nhân

Ở đây chúng ta sẽ giả sử mỗi lần nhấn nút BTN thì ngõ vào nút BTN của mạch là một xung lên rồi xuống đơn giản trong khoảng thời gian ngắn (20 ns) Testcase 1: mặc định ban đầu ta cho ngõ vào RES lên 1 rồi xuống 0, mạch sẽ thực hiện chế độ cộng, lúc này ngõ ra O sẽ chỉ hiển thị kết quả là phép cộng của hai số A và B Ở trường hợp này ta cho A=4 và B=2 nên ngõ ra O là 6

Testcase 2: ngõ vào BTN lên 1 xung, ngay sau đó mạch sẽ chuyển sang chế độ trừ và ngõ ra O sẽ là kết quả của số A trừ cho số B A=5 và B=3, ngõ ra O sẽ bằng 2 nhưng kết quả là số dương nên bit dấu lên 1

Testcase 3: vẫn ở chế độ trừ nhưng đảo giá trị của A và B, lúc này A=3 và B=5, ngõ ra O cũng là 2 nhưng kết quả phải là số âm nên ngõ ra bit Dấu về 0

Testcase 4: ngõ vào BTN thêm 1 xung, mạch chuyển sang chế độ nhân, ngõ ra O hiển thị kết quả của 2 số A và B nhân với nhau A=7, B=8 nên O=56

Hình 19 Kết quả Testbench của Topmodule ở chế độ so sánh

Trang 21

Testcase 5: Thêm xung vô ngõ vào BTN lần 3, mạch sẽ chuyển sang chế độ so sánh Ta lấy A=9 và B=6 để giá trị của A lớn hơn B khi này ngõ ra greater (A>B) lên mức 1 các ngõ ra khác ở mức 0

Testcase 6: vẫn ở chế độ so sánh, ta lại cho A=11, B=11 để giá trị của A bằng B lúc này ngõ ra equal (A=B) lên 1 và các ngõ ra khác là 0

Testcase 7: vẫn trong chế độ so sánh nên khi cho A=3 và B=8 khi này A nhỏ hơn B, ngõ ra less (A<B) lên 1 và các ngõ ra khác sẽ ở mức 0

Testcase 8: Cuối cùng ta cho thêm 1 xung vào BTN, mạch lại chuyển về chế độ cộng như ban đầu Giá trị ngõ vào A và B vẫn giữ nguyên của trường hợp trước đó Lúc này ngõ ra O sẽ là 11, các ngõ ra còn lại về mức 0

Kết quả testbench trên đã cho thấy mạch thực hiện hoàn toàn đúng yêu cầu và chức năng cho từng trường hợp thử

Trang 22

C PHẦN KẾT LUẬN

Qua quá trình nghiên cứu và thực hiện, chúng em đã thành công trong việc thiết kế và mô phỏng một vi mạch số có khả năng cộng, trừ, nhân và so sánh hai số nhị phân 4 bit sử dụng ngôn ngữ Verilog Mạch thiết kế đáp ứng được các yêu cầu về tính chính xác và độ tin cậy cao

Quá trình mô phỏng và kiểm tra đã giúp chúng em sửa chữa được các vấn đề, các lỗi tiềm ẩn, đồng thời cung cấp một cái nhìn tổng quan về cách thức hoạt động của mạch trong các tình huống khác nhau

Tuy không đạt được tính ứng dụng cao trong môi trường thực tế nhưng nó có khả năng tích hợp vào các hệ thống số phức tạp hơn Trong tương lai, chúng em dự định sẽ tiếp tục nghiên cứu để cải thiện độ tin cậy của mạch, đồng thời phát triển và mở rộng khả năng của mạch để hỗ trợ thực hiện thêm các phép toán số học khác phức tạp hơn Việc tích hợp với các công nghệ mới sẽ được xem xét để nâng cao khả năng ứng dụng của mạch trong thế giới mà kĩ thuật số càng ngày càng phát triển

Trang 25

assign P[0]=A[0] & B[0] & E; assign X[1]=A[1] & B[0]; assign X[2]=A[2] & B[0]; assign X[3]=A[3] & B[0]; assign Y[0]=A[0] & B[1]; assign Y[1]=A[1] & B[1]; assign Y[2]=A[2] & B[1]; assign Y[3]=A[3] & B[1]; assign Z[0]=A[0] & B[2]; assign Z[1]=A[1] & B[2]; assign Z[2]=A[2] & B[2]; assign Z[3]=A[3] & B[2];

assign T[0]=A[0] & B[3]; assign T[1]=A[1] & B[3]; assign T[2]=A[2] & B[3]; assign T[3]=A[3] & B[3];

fa1b fa1 (Y[0],X[1],1'b0,H[1],O[0]); fa1b fa2 (Y[1],X[2],O[0],S[1],O[1]); fa1b fa3 (Y[2],X[3],O[1],S[2],O[2]); fa1b fa4 (Y[3],1'b0,O[2],S[3],O[3]); fa1b fa5 (Z[0],S[1],1'b0,H[2],O[4]); fa1b fa6 (Z[1],S[2],O[4],S[5],O[5]);

Ngày đăng: 26/04/2024, 16:21

Tài liệu cùng người dùng

Tài liệu liên quan