1. Trang chủ
  2. » Luận Văn - Báo Cáo

thiết kế mạch nhân nhân nhanh dùng verilog và testbench

34 10 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 1,97 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MẠCH NHÂN VÀ MẠCH THUẬT TOÁN CORDIC MẠCH NHÂN VÀ MẠCH THUẬT TOÁN CORDIC | LINH QUÂN HOÀNG ĐẠI HỌC QUỐC GIA TPHCM TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA ĐIỆN TỬ VIỄN THÔNG BỘ MÔN ĐIỆN TỬ Môn học THIẾT K.

Trang 1

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

KHOA ĐIỆN TỬ VIỄN THÔNG

BỘ MÔN ĐIỆN TỬ

Môn học:

THIẾT KẾ VI MẠCH SỐ VÀ LÕI IP

Đề tài: MẠCH NHÂN VÀ MẠCH THUẬT TOÁN CORDIC

Lê Hoàng Long 19200016

TPHCM, ngày 4 tháng 10 năm 2022

Trang 2

MỤC LỤC

I MỞ ĐẦU 4

A Giới thiệu đề tài 4

B Nguyên lý thiết kế chip 4

C Tìm hiểu ngôn ngữ verilog 5

II MẠCH NHÂN 7

A Mạch nhân dạng dải (Array Multiplier) 7

B Mạch nhân Vedic 10

C Mạch nhân dùng thuật toán Booth (Booth multiplier) 15

D So sánh các mạch nhân 18

1 Booth và Vedic 18

2 Array, Booth và Vedic 20

II MẠCH THUẬT TOÁN CORDIC 22

A Đặt vấn đề 22

B Cơ sở toán học của thuật toán CORDIC 23

C Thuật toán CORDIC được đưa ra trong seminar này 24

D Thi hành thuật toán CORDIC bằng Verilog (mô tả mức behavior) 28

1 Thuật toán CORDIC đồng bộ 28

2 Thuật toán CORDIC bất đồng bộ 30

Trang 3

3 Mạch CORDIC đồng bộ có pipeline 33

IV ĐÁNH GIÁ THÀNH VIÊN 34

V TÀI LIỆU THAM KHẢO 35

Trang 4

MẠCH NHÂN VÀ MẠCH THUẬT TOÁN CORDIC

A Giới thiệu đề tài

Trong việc tính toán trong máy tính, những phép tính cơ bản thường sửdụng đó là các phép tính cộng, trừ, nhân, chia Trong bài báo cáo này tatìm hiểu và phân tích về 2 loại thuật toán là nhân và CORDIC

B Nguyên lý thiết kế chip

Nguyên lý thiết kế chip ICs số thường dựa trên quá trình “Basic platformdevelopment flow”

Tổng quan về nguyên lý thiết kế Chip

Khi thực hiện một thiết kế ta cần phân tích, xác định các đặc tính kỹ thuật của IC

số bằng cách tìm hiểu xu hướng thị trường, các yêu cầu của khách hàng Từ đó đưa

Trang 5

ra các đặc trưng (spec) của hệ thống, các thông số kỹ thuật: hoạt động của hệ thống(performance), tiêu hao năng lượng (power dissipation), độ tin cậy, giá cả…

Trong quá trình thiết kế ta cần quan tâm:

– Tối ưu hóa hệ thống: rút gọn các phần dư, mô tả không cần thiết

– Cần phân tích để tránh các tình huống, yếu tố có thể làm thay đổi hệ thống

Ví dụ: cấu trúc các khối, phân tầng thiết kế, chiều dài dây nối, … có thể làm thayđổi tần số hoạt động tối đa, công suất tiêu tán của chip…

Về mặt kỹ thuật ta cần quan tâm đến spec, và các thông số kỹ thuật khác: tần sốhoạt động, kích thước, công nghệ chế tạo

Các hệ thống lớn thường được xây dựng lên bằng cách kế thừa các hệ thống nhỏ cósẵn Kết hợp và phát triển các hệ thống nhỏ để có được hệ thống lớn Tập hợp các

hệ thống nhỏ này được lưu giữ trong thư viện Đây chính là quá trình hình thànhcác thư viện thiết kế (các library cell)

Ngoài các library cell, còn cần có thêm các thư viện công nghệ, các luật, quy tắcthiết kế,…

C Tìm hiểu ngôn ngữ verilog

Verilog HDL là một ngôn ngữ mô tả phần cứng đa mục đích dễ học và dễ sử dụng

Nó có cấu trúc đơn giản tương tự ngôn ngữ lập trình C Đối với người thiết kế đã

có kinh nghiệm trong lập trình với ngôn ngữ C sẽ thấy dễ dàng khi học về Verilog Verilog cho phép người thiết kế mô tả thiết kế ở nhiều cấp độ: mô tả hành vi, mô tảluồng dữ liệu, mô tả mức cổng, thanh ghi hoặc kết hợp giữa các mức này Do đóngười thiết kế chỉ cần học một ngôn ngữ duy nhất cho nhiều loại thiết kế khácnhau

Hầu hết các công cụ tổng hợp đều hỗ trợ ngôn ngữ Verilog Do đó, Verilog ngàycàng trở nên phổ biến và là lựa chọn của các nhà thiết kế

Trang 6

Tất cả các nhà sản xuất đều cung cấp thư viện VerilogHDL để tổng hợp cho thiết

kế Nên việc sử dụng Verilog cho phép chúng ta lựa chọn nhà sản xuất

Phương pháp thiết kế

Để dễ cho việc thiết kế người ta thường chia nhỏ công việc ra để giải quyết

Sau khi chia nhỏ công việc cho thiết kế người ta có thể thực hiện thiết kế theo 2phương pháp từ trên xuống (top-down) hoặc từ dưới lên (bottom-up)

Top-down là phương pháp thiết kế thực hiện thiết kế các khối top trước rồi mớithiết kế các khối chính, cuối cùng mới thiết kế các khối cell lá (leaf cell) Top-down design đòi hỏi người thiết kế rất cẩn thận và tuân thủ chặt các nguyên tắctrong thiết kế Các module con được gọi khi chưa được thiết kế

Mô tả phương pháp thiết kế Top-down

Bottom-up là phương pháp thiết kế mà trong đó ta sẽ xây dựng các khối nhỏ trước.Sau đó các khối thiết kế lớn sẽ được xây dựng từ các khối thiết kế nhỏ này Từngbước xây dựng lên các khối cao hơn cho đến khi xây dựng lên được top module

Trang 7

Mô tả về việc thiết kế Bottom-up

Các mức mô tả Logic

Trong Verilog ta có nhiều cấp độ mô tả:

Mô tả mức trạng thái (hành vi)

Mô tả mức luồng dữ liệu

A Mạch nhân dạng dải (Array Multiplier)

Mạch nhân dạng dải sử dụng 2 đầu vào của AND logic cho việc tạo ra các tích riêng phần Mạch nhân dạng dải chỉ hoạt động trên các toán hạng số không dấu

Trang 8

Những ưu điểm có được như sau: Chỉ sử dụng cổng AND 2 lối vào cho PPG và được thực hiện hóa trong CMOS logic, chỉ sử dụng 6 transistor, diện tích rất nhỏ

và công suất tiêu thụ thấp Độ trễ có thể so sánh với các mạch dạng dải có kích thước nhỏ với hệ số MBE Nhược điểm là độ trễ tăng lên nếu mạch nhân dạng dải được thiết kế cho mạch nhân nhiều số bit

Mạch nhân dạng dải 4x4 bit

Trang 9

Hình trên cho thấy các tích riêng phần của mạch nhân dạng dải 8x8 bit có dấu Nó cũng sử dụng AND 2 lối vào cho PPG Mạch nhân dạng dải loại này chỉ hoạt động trên các số hạng có dấu và không hoạt động trên các số hạng không dấu Đối với mạch nhân loại này, nó cần có một tín hiệu điều khiển có thể sửa đổi được để thực hiên phép nhân không dấu hoặc có dấu.

Kết quả mô phỏng Mạch nhân dạng dải 4x4

B Mạch nhân Vedic

Toán học Vedic là tên được đặt cho hệ thống toán học cổ đại của Ấn Độ đã được tái khám phá vào đầu thế kỷ XX từ các tác phẩm điêu khắc Ấn Độ cổ đại (Vedas)

Trang 10

Toán học Vedic có một kỹ thuật tính toán độc đáo dựa trên 16 kinh điển (Sutras) Với mạch nhân tốc độ cao 8x8 bit sử dụng kiến trúc Vedic, nó hoàn toàn khác với phương pháp nhân giống thông thường như cộng và dịch Hơn nữa, mã hóa

Verilog HDL của Urdhva tiryakbhyam Sutra cho phép nhân 8x8 bit và triển khai FPGA của chúng bằng công cụ Xilinx Synthesis Tool trên bộ kit Spartan 3 đã đượcthực hiện và đầu ra đã được hiển thị trên bộ Spartan 3 của LED

Cấu trúc đường ống (Pipeline) dựa trên thuật toán hình học không đổi FFT cơ số logarit 2, sử dụng các số nhân phức tạp log2N và có khả năng tính toán một điểm FFT đầy đủ trong N/2 chu kì clock, đã được đề xuất bởi J Choi và V.Boriakoff Tuy nhiên, kiến trúc này đòi hỏi một lượng lớn các thành phần trễ (kích thước bộ nhớ của mẫu N.log2N) và một cơ chế chuyển đổi khá phức tạp cho việc định tuyến

dữ liệu

Urdhva - Triyakbhyam là công thức chung áp dụng cho tất cả các trường hợp nhân

và cũng trong việc chia một số lớn cho một số lớn khác Nó có nghĩa là theo chiều dọc và chéo

Mạch nhân 2x2 bit

Trang 11

Hình trên minh họa các bước để nhân 2 số 2 bit Chuyển đổi hình trên sang một mạch phần cứng tương đương ta sẽ có 3 cổng and, nó sẽ đóng vai trò như 2 bit nhân và 2 half adders để cộng các tích để cho ra tích cuối cùng Dưới đây là chi tiếtphần cứng đã được mô tả.

Trong đó a và b là 2 số được nhân và q là tích Với thiết kế này, ta có thể code verilog dễ dàng, sử dụng các cổng AND và các bộ HA (half adders)

Mạch nhân 4x4 bit

Sử dụng 4 bộ nhân 2x2 ở trên và 3 bộ cộng, ta có thể tạo một bộ nhân 4x4 bit Ta phải khởi tạo đúng các bộ nhân 2x2 và các bộ cộng Trước tiên, chúng ta phải viết code cho các bộ cộng 4 bit và 6 bit Việc lựa chọn sử dụng bộ cộng nào là quyết định của mỗi người Nếu muốn hiệu suất tốt hơn, ta có thể thay các bộ cộng thông thường bằng CSA hoặc compressors Đối với một thiết kế đơn giản, ta sử dụng toán tử cộng được hỗ trợ bởi công cụ tổng hợp XST, theo mặc định sẽ chọn bộ cộng có phần cứng thấp Kiến trúc này theo cây wallace, giúp giảm mức độ phép tính cộng từ 3 giai đoạn xuống còn 2 Việc sắp xếp của các bộ cộng và phép tính cộng được giải thích bằng hình bên dưới:

Trang 12

Mạch nhân Veidic 4x4 bit

Các tham số hiệu suất và thiết lập đơn giản

Mạch nhân Vedic 4x4 bit được so sánh dựa trên các thông số hiệu suất như độ truyền trễ (propagation delay), công suất tiêu thụ trung bình và số lượng transistor

Trang 13

Để đạt hiệu năng tốt hơn, các mạch được thiết kế sử dụng phương pháp CMOS logic so sánh mạch nhân 4x4 Vedic với mạch nhân dạng dải xét về propagation delay, công suất tiêu thụ trung bình và công suất trễ của tích (power delay

product) Tất cả các mạch được thiết kế sử dụng TANNER EDA with Model file Công suất ước tính là một nhiệm vụ khó khăn vì sự phụ thuộc vào các thông số khác nhau và đã nhận được rất nhiều sự chú ý Phương pháp mô phỏng trực tiếp được sử dụng để phân tích kết quả

Trang 14

Đồ thị biểu thị sử so sánh mạch nhân Vedic 4x4 sử dụng phương pháp CMOS logic so sánh mạch nhân 4x4 Vedic với mạch nhân dạng dải xét về propagation delay, công suất tiêu thụ trung bình (Average Power Consumed )và công suất trễ của tích (power delay product).

Phân tích kết quả:

Ta có thể thấy rằng mạch nhân Vedic 4x4 bit tốt hơn so với mạch nhân dạng dải 4x4 bit Mạch nhân Vedic cho ta kết quả nhanh hơn Thời gian lưu trữ có thể giúp trả lời thêm nhiều câu hỏi Nó tốt hơn nếu xét về propagation delay, công suất tiêu thụ trung bình và công suất trễ của tích (power delay product)

Theo bài báo khoa học “Implementation of Multiplier using Vedic Algorithm” củaPoornima M, Shivaraj Kumar Patil, Shivukumar , Shridhar K P , Sanjay H, thiết kếmạch nhân Vedic 4x4 bit được thực hiện trên T-Spice v13.0 Việc sử dụng CMOS logic tính toán các đường trễ (path delay) được thấy là 0.4ns đối với mạch nhân Vedic nhưng với mạch nhân dạng dải thì path delay được tìm thấy là 25.3ns Do đó

có thể kết luận rằng hiệu suất của mạch nhânVedic 4x4 bit có vẻ rất hiệu quả về mặt tốc độ khi so sánh với hệ số Array Giảm thời gian trễ là yêu cầu rất cần thiết đối với nhiều ứng dụng và kỹ thuật nhân Vedic rất phù hợp với mục đích này

C Mạch nhân dùng thuật toán Booth (Booth multiplier)

Giới thiệu thuật toán Booth

Với một mạch nhân dùng phần cứng truyền thống thì cách thực hiện nó tương tự như phép nhân bằng tay: các tích riêng phần được tính toán, dịch một cách thích hợp sau đó cộng lại Thuật toán này có thể bị chậm nếu có quá nhiều tích riêng phần (ví dụ quá nhiều bit) bởi vì output phải đợi các tích riêng phần để cộng lại Thuật toán Booth giúp giảm một nửa số lượng số lượng tích riêng phần Điều này giúp tăng đáng kể tốc độ bởi tổng số lượng tích riêng phần cần để thực thiện phép

Trang 15

tính nhân này đã được giảm một lượng đáng kể giúp phép cộng để tổng hợp phép nhân thực hiện nhanh hơn nhiều.

Chỉ dịch

Trang 16

Ví dụ ta có phép nhân 7×3=21 là 1 phép nhân 4 bit

Với 7 là M=0111, 3 là Q=0011(=Q3Q2Q1Q0), A (Accumulator)=0000 và kết quả ta cần nhận được là 2110= 00010101

1110

1001 0100

1 1

DỊCH 3) 1110

Trang 17

Mô phỏng 2 số 8 bit nhân nhau:

D So sánh các mạch nhân

1 Booth và Vedic

Dựa theo bài báo cáo khoa học “IMPLEMENTATION OF 16x16 BIT

MULTIPLICATION ALGORITHM BY USING VEDIC MATHEMATICS

OVER BOOTH ALGORITHM” của Pranita Soni, Swapnil Kadam, Harish

Dhurape, Nikhil Gulavani, ta có được những kết quả so sánh sau:

a Mạch nhân Booth 4x4 bit và mạch nhân Vedic

No of 4 input

LUTs

42 out of 7168(0%)

32 out of 7168(0%)

No of bonded

IOBs

16 out of 141(11%)

16 out of 141(11%)

b Mạch nhân Booth 8x8 bit và mạch nhân Vedic

Trang 18

No of bonded

IOBs

32 out of 141(22%)

32 out of 141(22%)

c Mạch nhân Booth 16x16 bit và mạch nhân Vedic

multiplier

Vedic multiplier

No of bonded

IOBs

64 out of 141(45%)

64 out of 141(45%)

d So sánh Combination Path Delay giữa mạch nhân Booth và mạch nhân Vedic

Trang 19

Biểu đồ trên so sánh … Giữa mạch nhân Booth và Vedic 4, 8, 16 bit Từ đó ta có

thể kết luận mạch nhân Booth hiệu quả hơn mạch nhân Booth

2 Array, Booth và Vedic

Dựa theo bài báo cáo khoa học “High Speed and Area Effcient Vedic Multiplier”

của Vaijyanath Kunchigi, Linganagouda Kulkarni, Subhash Kulkarni Jawaharlal Nehru Technological Universit Hyderabad, AP, India, ta có các kết quả so sánh

sau

Trang 20

So sánh độ trễ của 3 mạch Vedic, Booth, Array (ns).

So sánh diện tích của các mạch nhân 4 bit.

Dựa vào sự so sánh về diện tích và độ trễ của ba mạch nhân Booth, Array và

Vedic, thì ta thấy mạch Vedic vừa tiết kiệm diện tích lại nhanh hơn 2 mạch còn lại

Trang 21

Về tốc độ, ta có thể thấy Vedic nhanh hơn Booth và Array chậm hơn so với 2 mạchkia Về diện tích, Booth to nhất và Vedic nhỏ nhất.

III MẠCH THUẬT TOÁN CORDIC

A Đặt vấn đề

Các ứng dụng về truyền thông căn bản nhất là các phép điều biến, giải điều biến, hoặc các ứng dụng về lọc số như bộ chuyển đếm xuống (Digital Down Converter –DDC), các ứng dụng tạo dao động số (Numerically Controlled Oscillator - NCO), luôn đòi hỏi một bộ phận tạo ra các giá trị sin và cosin của một góc bất kỳ nào đó

để có thể vận hành tính năng

Ngay từ những đời đầu của kỷ nguyên máy tính, người ta đã ứng dụng được cơ sở phương pháp tính để tạo ra giá trị sin và cosin của một góc bất kỳ nào đó trên nền tảng software, tuy nhiên số lượng mã lệnh để bộ xử lý cho ra được một kết quả sin,cos kể từ lúc cho vào input là quá lớn, dẫn đến thời gian đáp ứng quá lâu Nếu muốn khắc phục tình hình, người ta có thể thay bằng những bộ xử lý có tốc độ nhanh hơn, tuy nhiên dù cho tốc độ CPU có cao hơn được gấp 2, gấp 3 thì chi phí cũng đã rất đắt và cũng chưa chắc đủ nhanh, đó là chưa nói đến tác động của việc tăng tốc độ bộ xử lý mà số lượng mã lệnh vẫn bao nhiêu đó thì năng lượng tiêu thụ tăng lên, tuổi thọ dễ bị giảm, và cần các cơ chế làm lạnh chip phức tạp hơn

Biết được hạn chế đó, người ta đã đưa các thuật toán thi hành trên các mạch điện cứng của thuật toán tìm sin, cosin, nhưng lại có sự xuất hiện của các phép tính nhân chia, nên dù phương án này tối ưu hơn phương án software nhiều, nhưng chung quy thì tốc độ của nó vẫn còn rất giới hạn, trong khi đòi hỏi về việc cải thiêntốc độ cho bộ phận tạo sin, cos của rất nhiều lĩnh vực điện tử ngày một tăng, mà đặc biệt là lĩnh vực viễn thông

Trang 22

Năm 1956, Jack E Volder, một nhà kỹ sư người Mỹ đã phát minh ra thuật toán

CORDIC (COordinate Rotation DIgital Computer), là loại thuật toán nhận tính

sin, cos mà chỉ dựa vào các phép toán cộng, trừ và dịch mà không cần đến các phép tính nhân, chia là thuật toán nhanh nhất và hiệu quả nhất cho đến thời điểm hiện tại cho việc tính sin, cosin của một góc cho trước Ngày nay đã có rất nhiều chip ASIC thực hiện thuật toán CORDIC được cho ra đời và tiêu thụ trong rất nhiều lĩnh vực

B Cơ sở toán học của thuật toán CORDIC

Ý tưởng CORDIC xuất phát từ một phương trình toán học đơn giản, giả sử ta có một vector (X0, Y0) và ta vector quay góc này một có ϕ nào đó, sau khi quay, vector mới có tọa độ (Xn, Yn), lúc đó ta có các phương trình

Trang 23

Việc sau khi quay, ta được các giá trị Xn, Yn mới phụ thuộc vào các giá trị X0, Y0

cũ và giá trị của ϕ, ta nghĩ đến việc ứng dụng sự quay này vào một thuật toán mà ở đó:

+ Các giá trị tan được chọn đặc biệt, là số mũ của 2, ý tưởng này xuất phát từ việc nhân hay chia cho 2 có thể được làm đơn giản bởi các bộ dịch, tức là ta sẽ chỉ chọncác góc quay mà ϕ = tan-1(2-i) với i (viết tắt của iteration), là số chu trình đã thực hiện phép quay

+ Ta để ý rằng các giá trị Xn và Yn ở dạng phương trình này luôn có một tích số được thêm vào ở mỗi lượt xoay đó là cos(ϕ) = cos(tan-1(2-i)), người ta đã chứng minh được rằng ∏cos(tan-1(2-i)) = 0.6073 với i  ∞, tuy nhiên trong thực tế thì chỉcần i lớn hơn 25 thì tích này đã rất gần với 0.6073

 Như vậy, thay vì nhân tích số cos(ϕ) ở mỗi chu trình, ta chỉ cần gán cứng giá trị

X hoặc Y ở chu trình đầu tiên với một số đơn vị đã tỷ lệ sẵn với 0.6073

C Thuật toán CORDIC được đưa ra trong seminar này

Tạo một bảng Look-up Table để chứa các giá trị của ϕ = tan-1(2-i) với i từ 0 đến 31, đây là một bảng thể hiện các giá trị số thực dấu phẩy tĩnh (fixed-point), tại i = 0, tan-1(2-i) = 45o, ta chọn giá trị biểu thị cho 45o là

00100000000000000000000000000000 (đổi ra thập phân số nguyên là

Ngày đăng: 11/09/2022, 03:24

🧩 Sản phẩm bạn có thể quan tâm

w