intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Thiết kế bằng FPGA - Trường Đại học Thái Bình

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:45

10
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nội dung tập Bài giảng Thiết kế bằng FPGA được chia làm hai phần lý thuyết phần thực hành bổ trợ cho nhau giúp sinh viên tiếp thu được kiến thức đồng thời hình thành thái độ, kỹ năng khi học. Mời các bạn cùng tham khảo nội dung đầy đủ dưới đây.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Thiết kế bằng FPGA - Trường Đại học Thái Bình

  1. MỤC LỤC MỤC LỤC.................................................................................................................................................... 1 LỜI MỞ ĐẦU.............................................................................................................................................. 3 PHẦN LÝ THUYẾT ................................................................................................................................... 4 CHƯƠNG 1 ................................................................................................................................................. 4 GIỚI THIỆU VỀ NGÔN NGỮ VHDL, PHẦN MỀM ISE ..................................................................... 4 1.1 Giới thiệu tổng quát ngôn ngữ VHDL ...................................................................................... 4 1.2 Giới thiệu giao diện user của ISE .............................................................................................. 4 1.3 Giới thiệu các menu chức năng và nguyên lí hoạt động .......................................................... 5 1.4 Hướng dẫn cài đặt ISE ............................................................................................................... 6 1.5 Tiến hành tìm hiểu sử dụng phần mềm .................................................................................... 9 CHƯƠNG 2 ............................................................................................................................................... 10 CẤU TRÚC CHƯƠNG TRÌNH VÀ TẬP LỆNH VERILOG HDL ..................................................... 10 2.1 Cấu trúc chương trình .................................................................................................................... 10 2.2 Tập lệnh ........................................................................................................................................... 10 PHẦN THỰC HÀNH ............................................................................................................................... 19 CHƯƠNG 1 ............................................................................................................................................... 19 VIẾT CHƯƠNG TRÌNH THEO DẠNG VHDL, TỔNG HỢP VÀ MÔ PHỎNG CÁC CỔNG LOGIC CƠ BẢN ....................................................................................................................................... 19 1.1 Chạy chương trình soạn thảo bao gồm tạo file, mở file, add linh kiện vào màn hình soạn thảo và tạo ra những linh kiện mới ..................................................................................................... 19 1.2 Chạy chương trình tổng hợp, đọc các thông số khai báo ...................................................... 20 1.3 Mô phỏng trên phần mềm các cổng logic cơ bản ................................................................... 32 1.4 Mô phỏng trên phần mềm các hàm đã rút gọn ...................................................................... 33 1.5 Mô phỏng trên phần mềm các hàm chưa rút gọn .................................................................. 37 CHƯƠNG 2 ............................................................................................................................................... 38 VIẾT CHƯƠNG TRÌNH THEO CẤU TRÚC ....................................................................................... 38 2.1 Tìm hiểu các lệnh cấu trúc chương trình ................................................................................ 38 2.2 Tổng hợp .................................................................................................................................... 38 2.3 Mô phỏng trên phần mềm lập trình bộ nhớ ........................................................................... 40 2.4 Mô phỏng trên phần mềm lập trình bộ đếm........................................................................... 40 1
  2. 2.5 Mô phỏng trên phần mềm lập trình bộ ALU ......................................................................... 41 ĐỀ CƯƠNG ÔN TẬP ............................................................................................................................... 43 2
  3. LỜI MỞ ĐẦU Học phần “Thiết kế bằng FPGA” là học phần chuyên ngành dành cho sinh viên bậc đại học ngành điện tử. Để phục vụ cho quá trình dạy và học học phần này cho giảng viên và sinh viên, việc biên soạn tập Bài giảng Thiết kế bằng FPGA theo đúng chương trình đào tạo đã được xây dựng là rất cần thiết. Nội dung tập Bài giảng Thiết kế bằng FPGA được chia làm hai phần lý thuyết phần thực hành bổ trợ cho nhau giúp sinh viên tiếp thu được kiến thức đồng thời hình thành thái độ, kỹ năng khi học. 3
  4. PHẦN LÝ THUYẾT CHƯƠNG 1 GIỚI THIỆU VỀ NGÔN NGỮ VHDL, PHẦN MỀM ISE 1.1 Giới thiệu tổng quát ngôn ngữ VHDL VHDL là một trong hai ngôn ngữ mô phỏng phần cứng thông dụng nhất, được dùng trong thiết kế IC, ngôn ngữ còn lại là Verilog HDL HDL cho phép mô phỏng các thiết kế đa dạng, sửa chữa lại hoặc thực nghiệm bằng những cấu trúc khác nhau. Các thiết kế được mô tả trong HDL là những kỹ thuật độc lập, dễ thiết kế, dễ tháo gỡ và thường dễ đọc hơn ở dạng bản đồ đặc biệt là ở các mạch điện lớn Verilog thường được dùng để mô tả thiết kế ở bốn dạng: • Thuật toán (một số lệnh giống ngôn ngữ C như : if, case, for,while…). • Chuyển đổi thanh ghi (kết nối bằng các biểu thức Boolean). • Các cổng kết nối( cổng: OR, AND, NOT…). • Chuyển mạch (BJT, MOSFET). Ngôn ngữ này cũng chỉ rõ cách thức kết nối, điều khiển vào ra trong mô phỏng 1.2 Giới thiệu giao diện user của ISE 4
  5. 1.3 Giới thiệu các menu chức năng và nguyên lí hoạt động • (Select tool): con trỏ là công cụ giúp chọn lựa các thành phần trên cửa sổ làm việc • Nút (Text tool) : công cụ tạo các ra các dòng văn bản trên cửa sổ làm việc • (Symbol tool): chứa linh kiện sử dụng cho quá trình soạn thảo (các cổng luận lý, các megafunction, và các chứa năng khác) • (Block tool): công cụ hỗ trợ việc tạo ra các khối chức năng. Giúp cho việc thiết kế nhiều cấp chức năng. • (orthogonal node tool): nối dây tín hiệu • (orthogonal bus tool): nối bus cho các tín hiệu • (Zoom tool): phóng to, thu nhỏ • (Full Screen): Lựa chọn chế độ cửa sổ làm việc là Full Screen hay không. • (Find): công cụ tìm kiếm trên cửa sổ làm việc 5
  6. 1.4 Hướng dẫn cài đặt ISE 6
  7. 7
  8. 8
  9. 1.5 Tiến hành tìm hiểu sử dụng phần mềm Bước 1. Vào Menu > filechọn New Project Wizard Bước 2. Ta chọn thư mục để chứa project và đặt tên cho project Bước 3. Sau đó ta chọn hãng sản xuất chip và tên loại chip trên mạch Bước 4. Cuối cùng chọn Finish để hoàn tất 9
  10. CHƯƠNG 2 CẤU TRÚC CHƯƠNG TRÌNH VÀ TẬP LỆNH VERILOG HDL 2.1 Cấu trúc chương trình // Khai báo module Module tên chương trình (tên biến I/O); // tên chương trình tên file.v. Input[msb:lsb] biến; Output[msb:lsb] biến; Reg[msb:lsb] biến reg; Wire[msb: lsb] biến wire; // Khai báo khối always, hoặc khối initial. … câu lệnh … Endmodule 2.2 Tập lệnh a) Hành vi Verilog 4 mức khuôn mẫu • Chuyển mạch • Cổng • Mức tràn dữ liệu • Hành vi hoặc thủ tục được đề cập đến bên dưới Câu lệnh thủ tục Verilog được dùng để tạo mẫu thiết kế ở mức cao hơn. Chúng chỉ ra những cách thức mạnh của việc làm ra những thiết kế phức tạp. Tuy nhiên, những thay đổi nhỏ trong phương pháp mã hóa có thể gây rat hay đổi lớn trong phần cứng. Các lệnh thủ tục chỉ có thể được dùng trong thủ tục ✓ Những chỉ định theo thủ tục: Là những chỉ định dùng trong phạm vi thủ tục Verilog (Khối always và intinial). Chỉ biến reg và integer có thể được đặt bên trái dấu = trong thủ tục. Bên phải của chỉ định là một biểu thức mà có thể dùng bất cứ dạng toán tử nào. ✓ Delay trong chỉ định 10
  11. Trong chỉ định ∆t là khoảng thời gian trải qua trước khi một lệnh được thực hiện và bên trái lệnh gán được tạo ra. Với nhiều chỉ định trễ, bên phải được định giá trực tiếp nhưng có một delay của ∆t trước khi kết quả được đặt bên trái lệnh gán. Nếu thêm một quá trình thay đổi nữa cạnh bên phải tín hiệu trong khoảng thời gian ∆t, thì không cho kết quả ở ngõ ra. Delay không được hỗ trợ bởi các công cụ Cú pháp chỉ định thủ tục Biến = biểu thức; Chỉ định trễ: #∆t Biến = biểu thức; intra_assignment delay: Biến = #∆t biểu thức. Ví dụ: Reg[6:0] sum; reg h, zilch; Sum[7] = b[7]^c[7]; // thực thi tức thời; Ziltch = #15 ckz & h; // ckz & h định giá trị tức thời; ziltch thay đổi sau 15 đơn vị thời gian. #10 hat = b & c;/* 10 đơn vị thời gian sau khi ziltch thay đổi, b & c được định giá và hat thay đổi*/ ✓ Chỉ định khối: Chỉ định khối (=) thực hiện liên tục trong thứ tự lệnh đã viết. Chỉ định thứ hai không được thực thi nếu như chỉ định đầu cho hoàn thành. Cú pháp: Biến = biểu thức; Biến = #∆t biểu thức; #∆t Biến = biểu thức; Ví dụ: Initial Begin a = 1; b = 2; c = 3; 11
  12. #5 a = b + c; // sau 5 đơn vị thời gian thực hiện a = b + c = 5. d = a; // d = a = 5. Always@(posedgeclk) Begin Z = Y; Y = X; // thanh ghi dịch. y = x; z = y; // flip flop song song. ✓ Begin …end: Lệnh khối begin … end được dùng để nhóm một vài lệnh cú pháp được cho phép. Bao gồm function, khối always và khối initial. Những khối này có thể được tùy ý gọi tên. Và bao gồm khai báo reg, integer, tham số. Cú pháp: Begin: tên khối Reg [msb:lsb] danh sách biến reg; Integer [msb:lsb] danh sách integer; Parameter [msb:lsb] danh sách tham số; …câu lệnh… End Ví dụ: Function trivial_one;// tên khối: trivial_one Input a; begin: adder_blk integer i; … lệnh… end ✓ Vòng lặp for: Giống như c/c++ được dùng để thực hiện nhiều lần một lệnh hoặc một khối lệnh. Nếu trong vòng lặp chỉ chứa một lệnh thì khối begin … end có thể bỏ qua. Cú pháp For (biến đếm = giá trị 1; biến đếm = giá trị 2; 12
  13. biến đếm = biến đếm +/- giá trị) begin … lệnh … end Ví dụ: For (j = 0; j
  14. Case 1: Begin … câu lệnh… end Case 2: Begin … câu lệnh … end Case 3: Begin … câu lệnh … end … default: begin … câu lệnh … end endcase ví dụ: Case (alu_clk) 2’b00: aluout = a + b; 2’b01: aluout = a - b; 2’b10: aluout = a & b; default: aluout = 1’bx; endcase ✓ Khối always: Cú pháp Always@ (sự kiện 1 or sự kiện 2 or…) 14
  15. Begin … câu lệnh… end Always @( sự kiện 1 or sự kiện 2 or…) Begin: tên khối … câu lệnh … end ✓ Khối initial Cú pháp Initial Begin … câu lệnh … end ví dụ: Initial Begin Clr = 0; Clk = 1; End Initial Begin a = 2’b00; #50 a = 2’b01; #50 a = 2’b10; End ✓ Hàm Khai báo hàm: Khai báo hàm là chỉ ra tên hàm, chiều rộng của hàm giá trị trả về, đối số hàm dữ liệu vào các biến reg dùng trong hàm và tham số cục bộ của hàm số nguyên của hàm. 15
  16. Cú pháp: Function [msb:lsb] tên hàm; Input [msb:lsb] biến vào; Reg [msb:lsb] biến reg; Parameter [msb:lsb] tham số; Integer [msb:lsb] số nguyên; … câu lệnh… End function Ví dụ: Function [7:0] my_func; // hàm trả về giá trị 8 bit Input [7:0] i; Reg [4:0] temp; Integern; temp = i[7:4]| (i[3:0]); my_func = {temp,i[1:0]}; endfunction Ví dụ: Một hàm chỉ chứa 1 dữ liệu ra. Nếu có nhiều hơn 1 giá trị trả về được yêu cầu, ngõ ra sẽ phải kết nối tạo thành 1 vector trước khi đặt giá trị cho hàm. Gọi tên chương trình module có thể trích ra sau đó, riêng đối với ngõ ra từ các biểu mẫu nối vào nhau. Ví dụ dưới đây minh họa tổng quất cách dùng và cú pháp hàm trong verilog. Cú pháp: Tên hàm = biểu thức. Ví dụ Modulesimple_processor (instruction, outp); Input [31:0] instruction; Output[7:0] outp; Reg[7:0] outp; Reg func; 16
  17. Reg [7:0] opr1, opr2; Function[16:0] decode add(instr) Input [31:0] instr; Reg add_func; Reg[7:0] opcode, opr1, opr2; Begin Opcode = instr[31:24]; Opr1 = instr[7:0]; Case(opcode) 8’b 10001000: begin add_func = 1; opr2 = instr[15:8]; end 8’b 10001001: begin add_func = 0; opr2 = instr[15:8]; end 8’b 10001010: begin add_func = 1; opr2 = 8’b 00000001; end default: begin add_func = 0; opr2 = 8’b00000001; end endcase decode_add = {add_func, opr2, opr1}; 17
  18. end endfunction always@(intruction) begin {func, opr2, opr1}= decode_add (intruction); if(func= =1) outp = opr1+ opr2; else outp = opr1 – opr2; end endmodule 18
  19. PHẦN THỰC HÀNH CHƯƠNG 1 VIẾT CHƯƠNG TRÌNH THEO DẠNG VHDL, TỔNG HỢP VÀ MÔ PHỎNG CÁC CỔNG LOGIC CƠ BẢN 1.1 Chạy chương trình soạn thảo bao gồm tạo file, mở file, add linh kiện vào màn hình soạn thảo và tạo ra những linh kiện mới Bước 1. Vào Menu > file chọn New 19
  20. Bước 2. Sau đó chọn loại file mà chúng ta muốn viết chương trình Hoặc Bước 1. Vào Menu > file chọn Open Bước 2. Sau đó chọn file cần mở 1.2 Chạy chương trình tổng hợp, đọc các thông số khai báo 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2