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 1TRƯỜ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 2MỤ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 33 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 4MẠ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 5ra 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 6Tấ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 7Mô 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 8Nhữ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 9Hì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 10Toá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 11Hì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 12Mạ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 15tí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 16Ví 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 17Mô 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 18No 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 19Biể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 20So 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 21Về 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 22Nă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 23Việ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à