1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo đồ án bộ CHIA

45 1 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

Nội dung

ĐẠI HỌC QUỐC GIA ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ MINH BÁO CÁO ĐỒ ÁN BỘ CHIA NGÀY NỘP: 07/09/2022 Giảng viên: Hoàng Trang Người hướng dẫn: Đỗ Quang Thịnh Người thực hiện: Châu Trần Hồng Hà MSSV: 1910146 Thành phố Hồ Chí Minh, 2022 MỤC LỤC I Tổng quan đề tài .4 Lí thuyết chia Sign Restoring Divider .9 Sign Non-Restoring Divider 10 Radix-4 Divider 13 II RTL & SIMULATION 15 Cách thức thực simulation 15 a Sử dụng tool mô .15 b Cách đọc mô 16 Sign Restoring Divider 16 Sign Non-Restoring Divider 19 Radix-4 Divider 21 II Synthesis Quartus .23 Cách thức synthesis 23 a Setup library & constraint 23 b Synthesis 23 So sánh kết synthesis .25 a So sánh phần cứng 25 b So sánh Fmax 26 c So sánh Timing 28 III Synthesis DC .29 Cách thức synthesis 29 a Setup library & constraint 29 b Synthesis 31 c Ý nghĩa thông số report .32 So sánh kết synthesis .34 a report_area 34 b report_timing 37 IV Kết luận 43 V Tài liệu tham khảo .44 I Tổng quan đề tài Phép chia (Division) phép tính vận hành phức tạp bốn thuật tốn phép tính khó để giải nhanh chóng Do đó, chia đắt hoạt động chậm nhân Điều may mắn việc vận dụng thuật toán phép chia phổ biến so với phép nhân Có hai thuật tốn chia dạng số nhị phân sử dụng thuật tốn Restoring Non-Restoring Trong thuật toán, phép chia thực dựa phương pháp dịch bit, tạo thương số có chữ số thời điểm, bit MSB Việc xác định k chữ số thương số từ phần MSB cho phép "hội tụ" thành thương số có k chữ số k chu kỳ Việc tăng tốc độ phép chia thông qua việc giảm số chu kỳ dịch chuyển dẫn đến hình thành chia có số cao Trong phạm vi đồ án, tập trung vào ba loại chia bản: + Sign Restoring Divider + Sign Non- Restoring Divider + Unsign Radix-4 Divider Việc tập trung vào thiết kế ba loại chia dựa giải thuật so sánh ba loại chia để đánh giá chia tối ưu khía cạnh số cell sử dụng, area, timing Báo cáo trình bày gồm mục: + Đầu tiên phần mô hoạt động chia dựa tool ModelSim + Tiếp theo thực synthesis code chia tool Quartus Prime 18.1 để lấy thơng số báo cáo khía cạnh phần cứng, area, timing, tần số thực so sánh hiệu chia thông qua thông số + Tiếp theo thực synthesis code chia tool DC để lấy thơng số báo cáo khía cạnh phần cứng, area, timing thực so sánh hiệu chia thông qua thông số Lí thuyết chia * Phép chia dịch theo bit:1 Phép chia hay dịch theo bit thực cách khởi tạo phần dư ban đầu thành 푠(0) = 푠, liên tiếp trừ phần dư dịch chuyển số hạng 푠푠−푠푠 (Hình 1) Hình Phép chia số 8-bit số có 4-bit kí hiệu dấu chấm Mỗi số bị trừ phần dư dịch chuyển bit so với phần trước, cách tiếp cận đơn giản để dịch chuyển phần dư bit, chỉnh bit với bit số hạng thực phép trừ Điều dẫn đến thuật toán chia với việc thực bước dịch bit sang trái: 푠(푠) = 푠(푠−1) − 푠푠−푠푠푠) với 푠(0) = 푠 푠(푠) = 푠2 (2 푠 Hệ số 2푠 mà d nhân trước đảm bảo chỉnh thích hợp giá trị Sau k lần lặp, lặp lại trước dẫn đến: (푠) 푠 푠 푠 푠 푠 = 푠(0) − 푠(2 푠) = [푠 − (푠 × 푠)] = 푠 * Restoring divider:2 Computer arithmetic algorithms and hardware designs, Parhami Behrooz, Oxford University Press (2010), p265 Computer arithmetic algorithms and hardware designs, Parhami Behrooz, Oxford University Press (2010), p270 Hình Ví dụ cách thực phép chia restoring Chúng ta đề cập đến sơ đồ phép chia hình phép chia khơi phục (restoring) Thương số số {0, 1} Phép trừ tương ứng với giả sử 푠푠−푠 = Nếu phép trừ có hiệu số dương, chữ số thương số thực Ngược lại, 푠 ế 푠푠 푠 ố â 푠 chữ số thương số phải Thuật ngữ restroring division có nghĩa phần dư khơi phục giá trị phép trừ phần dư có kết khơi phục phần dư ban đầu * Non- restroing divider:1 Computer arithmetic algorithms and hardware designs, Parhami Behrooz, Oxford University Press (2010), p270 Hình Ví dụ phép chia non-restoring Việc thực phép chia restoring đòi hỏi phải lấy dấu phép trừ cục để xác định nên lưu trữ phần dư khôi phục lại Để tránh vấn đề vậy, người ta sử dụng thuật tốn phép chia khơng khơi phục (nonrestoring division algorithm) Như trước đây, giả định 푠푠−푠 = thực phép tính trừ Tuy nhiên, lưu trữ phần dư cục ghi mà không cần phải khôi phục lại Điều dẫn đến phần dư khơng cần xác (do có tên "nonrestoring") Chúng ta xem chấp nhận việc lưu trữ giá trị khơng xác ghi phần dư Giả sử phần dư dịch chuyển đầu chu kỳ 푠 Nếu có khơi phục phần dư 푠 − 2푠푠 giá trị 푠 nó, tiếp tục với phép dịch với phép trừ, nhận kết 푠 − 2푠푠 Thay vào đó, sử dụng phần dư khơng xác, phép dịch phép trừ có kết 2(푠 − 2푠 푠) + 2푠 푠 = 푠 − (3 × 푠2 푠), kết dự kiến Tuy nhiên, phép tính bổ sung thêm vào, kết 2(푠 − 2푠 푠) + 2푠 푠 = 푠 − 푠2 푠 , có giá trị thu sau khơi phục Do đó, phép chia khơng khôi phục, phần dư cục trở thành số âm, giữ phần dư khơng xác, lưu ý thực cộng, trừ, chu kỳ * Phép chia có dấu:1 Xem xét ví dụ sau phép chia số nguyên với tất kết hợp có kết z d có dấu: Từ ví dụ trước, thấy độ lớn q s không bị ảnh hưởng dấu đầu vào dấu q s dễ dàng suy từ dấu z d Do đó, cách để thực phép chia có dấu thơng qua thuật tốn gián tiếp chuyển đổi tốn hạng thành giá trị khơng có dấu cuối cùng, tính đến dấu cách điều chỉnh bit dấu thông qua lấy bù Đây phương pháp lựa chọn với phép chia restoring Trong phép chia non-restoring, trừ cộng Vì vậy, giống thể chữ số thương số chọn từ tập hợp {1, −1}, với tương ứng với phép trừ −1 tương ứng với phép cộng Mục tiêu kết thúc số dư khớp với dấu số bị chia (dương phép chia không dấu) Quan điểm (cố gắng để khớp dấu phần dư 푠 với dấu số bị chia 푠) dẫn đến ý tưởng chia số có dấu cách trực tiếp Quy tắc chọn chữ số thương số trở thành: If 푠푠푠푠(푠) = 푠푠푠푠 then 푠 (푠) Hai vấn đề cuối phải giải quyết: = else 푠 푠−푠 = −1 푠−푠 Thương số với chữ số −1 phải chuyển đổi thành hệ nhị phân chuẩn Nếu phần dư cuối 푠 có dấu đối nghịch với 푠, có bước hiệu chỉnh, bao gồm cộng ±푠 vào phần dư trừ ±1 từ thương số, cần thiết Computer arithmetic algorithms and hardware designs, Parhami Behrooz, Oxford University Press (2010), p274 Hình Ví dụ phép chia Sign Restoring Divider Sign Restoring Divider a Mô tả thiết kế - Ngõ vào: Số bị chia bit (-128…127) có dấu số chia bit có dấu (-8…7) - Ngõ ra: Thương số bit có dấu (-8…7) số dư bit có dấu (-8…7) - Điều kiện phép chia thực hiện: + Số chia khác + Lấy giá trị bù số bị chia số chia có giá trị âm, giá trị bit đầu số bị chia nhỏ bit số chia b Giải thuật code create_clock -name clk -period {clk} → tạo xung clock với chu kì ns set_clock_uncertainty 0.1 [get_clocks clk] → xác định độ lệch chu kì clock để xác định trường hợp clock xấu xảy lần kiểm tra timing set_clock_latency [get_clocks clk] → xác định độ trễ mạng độ trễ nguồn clock (là thời gian từ điểm bắt đầu truyền sóng đến clock thiết kế set_input_delay -max 0.5 -clock clk [all_inputs] set_input_delay -min 0.2 -clock clk [all_inputs] set_output_delay -max 0.5 -clock clk [all_outputs] set_output_delay -min 0.2 -clock clk [all_outputs] → xác định thời gian trễ từ lúc phát cạnh xung clock bên thiết liệu đến đầu vào thiết kế để kiểm tra thời gian tín hiệu vào đầu vào đầu thiết kế report_area > / /report/report.area → report diện tích thiết kế report_timing -delay_type max > / /report/report.timing report_timing -delay_type >> / /report/report.timing → report timing thiết kế report_constraint > / /report/report.constraint → report ràng buộc thiết kế report_qor > / /report/report.qor → report chất lượng thiết kế (số lượng cell, wire, ) write -f ddc -o / /report/report.ddc → chứa thiết kế ràng buộc thiết kế, tool đọc file nhanh chóng đọc lại file verilog lần write -format verilog -hierarchy -output / /report/lab_synth.netlist.v → chứa file RTL Synthesis write_sdf / /report/report.sdf → report định dạng trễ biên dịch tiêu chuẩn để xác định khả ứng dụng rộng rãi thiết kế write_sdc / /report/report.sdc → report ràng buộc xung clock * Coding in file dc_command.src b Synthesis - Truy cập vào thư mục /04_synth/run thiết kế - Chạy lệnh dc_shell để khởi động tool DC - Chạy file dc_command.src thiết kế trước lệnh source /dc_command.src Thư mục làm việc gồm Folder, folder 02_rtl chứa code verilog thiết kế, folder 04_synth gồm thư mục nhỏ file để tiến hành synthesic: + lib: Đây thư mục chứa thư viện để synthesic + report: Thư mục thơng tin report diện tích, timing, chất lượng, + run: Thư mục chứa file hệ thống trình chạy Synthesis + dc_command.src: Đây file chứa lệnh chạy trình Synthesis Để thực systhesic ta tiến hành mở tool DC thư mục run (dc_shell) Sau đó, nhập lệnh source /dc_command.src chờ q trình Synthesis hồn tất c Ý nghĩa thông số report * Port: 푠 Là tổng số ngõ vào ngõ thiết kế * Nets: 푠 Là tổng số dây cần kết nối thiết kế * Cells: 푠 Combinational cells: Là cổng logic hệ tổ hợp AND, OR, XOR, NOT, sử dụng synthesis 푠 Sequential cells: Là khối mạch chốt(Latch SR, D) phần tử Flip_Flop (D, JK, SR, T) sử dụng để synthesis * Buf/Inv: 푠 Clock tree synthesis kĩ thuật để cấp clock đồng khối với để độ trễ chênh lệch chúng nhỏ cân (skew and delay) Để làm điều người ta chèn thêm khối Buffers/Inverter cho clock routes 푠 Clock tree invertes dùng để tạo xung clock (clock tree) mà trì duty cycle xác 푠 Clock tree buffers cân yếu tố thời gian (latency skew) * Critical Path: 푠 Là khoảng thời gian tính toán lớn ngõ vào ngõ thiết kế mà khơng có delay * Setup time hold time: - Cả setup time hold time định nghĩa mối quan hệ clock liệu ngõ vào flip-flop đáp ứng yêu cầu tính - Setup time thời gian mà đảm bảo liệu ngõ Launch FF có sẵn ổn định khoan thời gian ngõ vào Capture FF trước có thay đổi xung clock flip-flop (posedge negedge) 푠 Clock network delay (푠 푠푠푠푠푠 & 푠푠푠푠푠푠푠푠) khoảng delay thực khối buffers đường dây clock (cấp clock đến khối tuần tự) 푠 푠 Data required time thời gian mà yêu cầu data phải có sẵn ổn định Capture flip-flop 푠 Data arrival time thời gian mà data xuất Capture flip-flop 푠 Slack: Là chênh lệch required time arrival time Giá trị slack định đường timing xét VIOLATED (vi phạm) hay MET (thoả) tuỳ thuộc vào đặc tính đường timing hold time hay setup time - Hold time thời gian mà đảm bảo giá trị thay đổi ngõ Launch FF không chồng lấn lên giá trị đầu trước ngõ vào Capture FF để đảm bảo việc Capture FF bắt giá trị xác có thay đổi xung clock (posedge negedge) So sánh kết synthesis a report_area - Sign restoring divider: - Sign non-restoring divider: - Radix-4 divider: - Bảng so sánh: Divider Sign Restoring Sign Non-Restoring Radix-4 Numbers of ports 24 28 44 Numbers of cells 145 314 615 Numbers of 112 263 565 33 51 50 272.4 513 875 combinational cells Numbers of sequential cells Total cell area - Nhận xét: + Kết synthesis từ tool DC cho kết tương tự Quartus Dựa vào bảng so sánh, ta thấy số lượng cell tổng diện tích mạch chia Radix-4 lớn nhất, tiếp đến chia Non- Restoring chia Restoring có mạch phức tạp + Ta có yêu cầu phép chia số ngõ vào gồm số bị chia 16 bit chia cho số chia bit Trong phép chia số 2, yêu cầu ngõ vào gồm số bị chia bit chia cho số chia bit Nên ta thấy tổng số port phép chia số gấp đôi so với tổng số port phép chia số + Số lượng cell phép chia Non-Restoring gấp đơi so với phép chia Restoring, mặt thuật tốn phép chia dịch số lượng cell sử dụng hai phép chia tương đương Do phức tạp chuyển đổi thương số phép chia Non-Restoring thành thương số xác nên mạch yêu cầu thêm phần cứng nhiều Ta thấy số lượng ghi chia Non-Restoring tương đương với số lượng ghi chia Radix-4 phải sử dụng thêm ghi để hiệu chỉnh thương số + Bộ chia số yêu cầu phần cứng nhiều hai chia số Restoring NonRestoring, tính tốn phép chia số 16bit cho số bit tính toán lúc hai chữ số thương số nên yêu cầu phần cứng để thiết kế phức tạp Ngồi thuật tốn để tìm hai chữ số thương số chia số có lồng vào thuật toán phép chia Restoring nên mạch tổ hợp phức tạp + Số lượng cell sử dụng tỉ lệ thuận với area sử dụng nên chia Radix4 có area lớn nhất, tiếp đến chia Non-Restoring cuối Restoring b report_timing - Sign restoring divider: - Sign non-restoring divider: - Radix-4 divider: Divider Sign Restoring Sign Non-Restoring Radix-4 Data Required Time 4.88 4.89 4.88 Data Arrival Time 1.32 4.24 4.86 Slack 3.56 0.65 0.02 * Nhận xét: - Ta có Data Required Time ba chia nên chủ yếu so sánh thông số Data Arrival Time từ start point đến end point - Dựa vào report Timing, ta thấy từ start point tới end point chia Radix-4 qua nhiều ghi hơn, ghi có phần delay phải qua mạch tổ hợp nên Data Arrival Time lớn Tương tự hai chia số 2, số ghi từ start point tới end point chia Non-Restoring nhiều so với chia Restoring nên Data Arrival Time chia Non-Restoring lớn - Cả ba chia vi phạm slack Data Arrival Time lớn Data Required Time Ta tăng thêm chu kì clock để Data Required Time lớn Data Arrival Time IV Kết luận Từ việc so sánh kết synthesis ba chia, ta thấy sử dụng chia Sign Restoring tối ưu so với hai chia Sign-Non Restoring Radix-4 mặt Area Timing Bộ chia Sign-Non Restoring chia số hai với chia Restoring phải qua bước hiệu chỉnh chữ số để có thương số xác nên Area Timing xấu Cịn chia Radix-4 tính toán hai chữ số thương số lúc việc tính tốn hai chữ số thương số phải thơng qua thuật tốn Restoring nên Area Timing chia Radix-4 xấu nhiều so với chia số V Tài liệu tham khảo Computer arithmetic algorithms and hardware designs, Parhami Behrooz, Oxford University Press (2010) Static timing analysis for nanometer designs a practical approach, Rakesh Chadha, J Bhasker (auth.), Springer US (2009) ... thiết kế ba loại chia dựa giải thuật so sánh ba loại chia để đánh giá chia tối ưu khía cạnh số cell sử dụng, area, timing Báo cáo trình bày gồm mục: + Đầu tiên phần mô hoạt động chia dựa tool ModelSim... số chia bit Trong phép chia số 2, yêu cầu ngõ vào gồm số bị chia bit chia cho số chia bit Nên ta thấy tổng số port phép chia số gấp đôi so với tổng số port phép chia số + Số lượng cell phép chia. .. việc so sánh kết synthesis ba chia, ta thấy sử dụng chia Sign Restoring tối ưu so với hai chia Sign-Non Restoring Radix-4 mặt Area Timing Bộ chia Sign-Non Restoring chia số hai với chia Restoring

Ngày đăng: 10/12/2022, 09:50

w