Báo cáo đề tài sinh viên đề tài báo cáo mạch số bằng VHDL

30 382 0
Báo cáo đề tài sinh viên đề tài báo cáo mạch số bằng VHDL

Đ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

BÁO CÁO ĐỀ TÀI SINH VIÊN ĐỀ TÀI:BÁO CÁO MẠCH SỐ BẰNG VHDL Mã số: -ĐT-SV-2011 I. Giới thiệu chung về công nghệ logic khả trình CPLD/FPGA II. Tìm hiểu ngôn ngữ mô tả phần cứng VHDL . VDHL là ngôn ngữ mô tả phần cứng cho các kiểu mạch số trong phạm vị các kết nối đơn giản của các cổng đến những hệ thống phức tạp. VHDL là viết tắt của VHSIC Hardware Description Language và VHSIC là viết tắt của Very High Speed Integrated Circuits. Ở đây,chúng ta chỉ tóm tắt ngắn gọn nguyên lý cơ bản của VHDL và cú pháp của nó. Nhiều chức năng cao cấp của ngôn ngữ VHDL có thể đã bị bỏ qua. VHDL cho phép mô tả được hầu hết các hệ thống phần cứng số. Các mô hình trừu tượng gồm : Mô hình hành vi (a Model of Behaviour). Mô hình thời gian (a Model of Time). Mô hình cấu trúc (a Model of Structure). Việc nắm chắc cấu trúc,cú pháp các mô hình mô tả của ngôn ngữ là rất quan trọng. VHDL cũng có nhiều điểm giống như một ngôn ngữ lập trình bậc cao, có cấu trúc, có cú pháp riêng, có cách tổ chức chương trình, có từ khóa, có phương pháp biểu diễn số liệu riêng Cấu trúc ngôn ngữ cơ bản của VHDL gồm: - Đối tượng: Quy định các dạng tín hiệu cố định, tín hiệu, cổng vào - ra, hay tín hiệu đệm … - Các kiểu dữ liệu: Quy định các kiểu dữ liệu có thể được dùng để gán cho mỗi đối tượng. - Các phép toán: Quy định các phép toán sử dụng cho mỗi loại dữ liệu. - Các đơn vị thiết kế: Các thành phần cơ bản cấu trúc lên một chương trình mã mô tả dùng VHDL. - Các cấu trúc lệnh tuần tự: Cấu trúc câu lệnh thực hiện theo tiến trình tuần tự, thường dùng mô tả các cấu trúc mạch tuần tự của mạch số. - Các cấu trúc lệnh song song: Cấu trúc câu lệnh thực hiện song song, thường dùng mô tả các cấu trúc mạch tổ hợp. 1. Cấu trúc cơ bản của ngôn ngữ lập trình VHDL. Cấu trúc cơ bản của một chương trình mô tả bằng VHDL —khai báo thư viện library IEEE; Khai báo gói dữ liệu (package) trong thư viện cần sử dụng: use IEEE.STD_LOGIC_1164.ALL; Khai báo thực thể Entity Tên_thực_thể is Khai báo các tham số generic nếu cần: Generic( khai báo danh sách các tham số); Port( Khai báo danh sách các cổng vào/ra ); End Tên_thực_thể; Bắt đầu viết Architecture Tên_kiến_trúc of Tên_thực_thể is {Khai báo:kiểu dữ liệu, các component,các đối tượng constant, signal} Begin { Viết các mô tả dùng cấu trúc lệnh song song } Process( danh sách tín hiệu kích thích nếu cần) {Khai báo:kiểu dữ liệu, các đối tượng biến constant, variable } Begin { Viết các mô tả dùng cấu trúc lệnh tuần tự } End process; { Viết các mô tả dùng cấu trúc lệnh song song hay process khác } End Tên_kiến_trúc; Ví dụ: chương trình mô tả bằng VHDL cho mạch sau: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; entity mach is Port ( a,b,c,d : in STD_LOGIC; f : out STD_LOGIC); end mach; architecture Behavioral of mach is signal e,g :std_logic; begin e<=a and b; g<= c xor d; f<=e or g; end Behavioral; 2.Các đơn vị thiết kế trong VHDL VDHL sử dụng 6 đơn vị thiết kế gồm 2 loại: đơn vị cơ bản và đơn vị thiết kế thứ cấp: Đơn vị thiết kế cơ bản: Library: Cho phép tạo thư viện trong VHDL Package: Tạo các gói giữ liệu trong Library, như các khai báo các đối tượng,khai báo thủ tục, hàm Entity: (Thực thể) - cho phép khai báo các giao diện của một khối thiết kế số nào đó: như khai báo các cổng vào/ra, các tham số của khối mạch - Đơn vị thiết kế thứ cấp (Phụ thuộc vào một đơn vị thiết kế cơ bản): Architecture: Mô tả hoạt động bên trong của một Entity hay đây chính là phần mô tả hoạt động của khối mạch số. Package Body: Mô tả chỉ tiết cho các khai báo trong Package như viết các hàm, các thủ tục Configuration: Đơn vị thiết kế cấu hình cho phép gắn các phiên bản của thực thể vào những kiến trúc khác nhau. Cấu hình cũng có thể được sử dụng để thay thế một cách nhanh chóng các phần tử của thực thể trong các biểu diễn cấu trúc của thiết kế. 2.1 Library (thư viện). Trong VHDL có các thư viện thiết kế chuẩn,ví dụ: library IEEE; use IEEE.STD_LOGIC_1164.ALL; thư viện chuẩn. use IEEE.STD_LOGIC_ARITH.ALL; thư viện toán học use IEEE.STD_LOGIC_UNSIGNED.ALL; thư viện chuẩn hỗ trợ thực hiện các phép tính không dấu. Ngoài ra người thiết kế có thể tạo các thư viện thiết kế riêng. Kết quả của việc biên dịch VHDL là chúng được cất giữ bên trong các thư viện để sử dụng trong các thiết kế khác.Một thư viện thiết kế có thể chứa các thư viện như sau: -Các đóng gói (packages):chứa những mô tả khai báo được dùng chung. -Các thực thể Entity:những mô tả giao diện thiết kế được dùng chung. -Các kiểu kiến trúc Architectures:những mô tả hoạt động thiết kế được dùng chung. -Các phép định cấu hình Configiration:những phiên bản của thực thể được dùng chung. Lưu ý:VHDL không hỗ trợ các thư viện theo thứ bậc,chúng ta có thể có nhiều thư viện nhưng không được khai báo lồng nhau. Ví dụ cách gọi và sử dụng thư viện: library My_Lib ; use My_Lib.Fast_Counters.all ; entity Mod1 is port ( . . . ); 2.2 Package và Package Body. Package: Là đơn vị thiết kế cơ bản dùng để chứa những khai báo cho các đối tượng, khai báo thủ tục procedure, hàm function, kiểu dữ liệu, component có thể dùng chung cho những thiết kế, cấu trúc, dự án khác nhau … Package Body : là đơn vị thiết kế phụ thuộc được dùng để chứa những mô tả chỉ tiết cho các khai báo trong đơn vị thiết kế Package nào đó, mô tả chi tiết nội dung của các hàm, các thủ tục Package Body thường được viết ngay sau Package. Cú pháp khai báo của Package như sau: package package_name is {package_declarative_item} end [package_name ]; package body package_name is {package_declarative_item} end [package_name Ví dụ: package EX_PKG is subtype INT8 is integer range 0 to 255; constant zero : INT8:=0; procedure Incrementer (variable Count : inout INT8); end EX_PKG; package body EX_PKG is procedure Incrementer (variable Data : inout INT8) is begin if (Count >= MAX ) then Count:=ZERO; else Count:= Count +1; end if; end Incrementer; end EX_PKG; 2.3 Configuration: Một thực thể có thể có một vài kiến trúc mô tả hoạt động cho nó. Trong quá trình thiết kế có thể phải thử nghiệm một vài biến thể của thiết kế bằng cách sử dụng các kiến trúc khác nhau. Cấu hình là thành phần cơ bản của đơn vị thiết kế. Cấu hình cho phép gắn các phiên bản của thực thể vào những kiến trúc khác nhau. Cấu hình cũng có thể được sử dụng để thay thế một cách nhanh chóng các phần tử của thực thể trong các biểu diễn cấu trúc của thiết kế. Cú pháp của mô tả cấu hình như sau: Configuration tên_cấu_hình of tên_thực_thể is Phần khai báo của cấu hình (cho phép sử dụng các phần tử trong package và library. for đặc_tả_của_khối {mệnh_đề_use} {các_phần_tử_của_cấu_hình} end for; Ví dụ: library ttl, work; configuration v4_27_87 of processor is use work.all; for structure_view for a1:alu use configuration ttl.sn74ls181; end for; for m1,m2,m3: mux use entity multiplex4 (behavior); end for; for all: latch use defaults end for; end for; end configuration v4_27_87; 2.4 Entity. Trong một hệ thống số,thông thường được thiết kế theo một sự xếp chồng các modul,mà mỗi modul này tương ứng với một thực thể thiết kế (entity) trong VHDL. Một khai báo entity được dùng để mô tả giao tiếp bên ngoài của một phần tử (component),nó bao gồm các khai báo các cổng đầu vào,các cổng đầu ra của phần t ú.Phn thõn ca kin trỳc c dựng mụ t s thc hin bờn trong ca thc th ú. Cú pháp khai báo của một Entity nh sau: Entity entity_name is [generic(generic_declaration);] [port (port_declaration);] end [entity_name]; [] : Dấu ngoặc vuông chỉ ra các tham số có thể lựa chọn. | : Dấu gạch đứng hiển thị một sự lựa chọn trong số các lựa chọn khác. {} : Khai báo một hoặc nhiều các đối tợng, mà các đối tợng này có thể đợc định nghĩa bởi ngời dùng. 2.4.1 Generic Tham s khai bỏo trong phn generic dựng kim soỏt, thay i cu trỳc, hot ng ca thc th, chỳng s c truyn giỏ tr hoc ly giỏ tr mc nh ban u khi thc th c khi to. Tham s ny rt hu ớch khi thit k theo kiu cu trỳc, s s dng nhiu thnh phn cu trỳc cựng kiu nh khai bỏo ca ENTITY nhng cú tham s v cu trỳc, hot ng khỏc nhau. Cú pháp của khai báo này nh sau: generic ( constant_name : type [:=init_value] {;constant_name: type[:=init_value]}); ở đây :Tên hằng constant_name chỉ ra tên của một hằng dạng generic (hằng dùng chung). Kiểu (Type) đợc dùng để chỉ ra kiểu dữ liệu của hằng. init_value : chỉ ra giá trị khởi tạo cho hằng. 2.4.2 Port Đợc dùng để khai báo các cổng vào, ra của Entity. Cú pháp của khai báo này nh sau: Port ( port_name : [mode] type [:= init_value] {; port_name:[mode] type [:=init_value]}); port_name đợc dùng để chỉ ra tên của một cổng mode ch ra hng vo ra ca tớn hiu ti cng ú Type chỉ ra kiểu dữ liệu của một cổng init_value chỉ ra giá trị khởi tạo cho cổng đó. Chú ý ! Với VHDL không phân biệt chữ hoa và chữ thờng, chẳng hạn nh : xyz = xYz = XYZ. * Có bốn mode đợc sử dụng trong khai báo cổng : - in : chỉ có thể đợc đọc, nó chỉ đợc dùng cho các tín hiệu đầu vào ( chỉ đợc phép nằm bên phải phép gán ) - out : Chỉ đợc dùng để gán giá trị, nó chỉ đợc dùng cho các cổng đầu ra ( Nó chỉ đợc nằm bên trái của phép gán ). - inout : Có thể đợc dùng để đọc và gán giá trị. Nó có thể có nhiều hơn một h- ớng điều khiển ( Có thể nằm ở bên trái hoặc bên phải phép gán ). - Buffer : Có thể đợc dùng để đọc và gán giá trị. ( Có thể nằm ở bên trái hoặc bên phải phép gán ). inout là một cổng hai hớng, còn Buffer là một cổng không có hớng. 2.4.3. Ví dụ về khai báo Entity: A B COUT CIN Hình trên chỉ ra một giao diện của một bộ cộng một bit. Tên Entity của phần tử này là FULL_ADDER. Nó bao gồm các cổng đầu vào A, B và CIN. FULL_ADDER SUM Các cổng này có kiểu dữ liệu là kiểu Bit, còn các cổng đầu ra SUM và COUT cũng mang kiểu dữ liệu là kiểu BIT. Ngôn ngữ VHDL dùng để diễn tả giao diện này nh sau: Entity FULL_ADDER is port ( A, B, CIN : in BIT; SUM, COUT : out BIT ); End FULL_ADDER ; 2.5 Architecture Cu trỳc ny cho phộp mụ t hot ng bờn trong ca thc th. Cỳ phỏp chung ca mt Architecture: Architecture Tờn_kin_trỳc of Tờn_thc_th is Thc hin cỏc khai bỏo cho kin trỳc Begin Vit cỏc mụ t hot ng bờn trong cho thc th End Tờn_kin_trỳc; Thụng thng cú th s dng 3 cỏch chớnh mụ t kin trỳc ca mt phn t hay h thng s ú l: mụ t theo mụ hỡnh hnh vi (Behaviour), mụ t theo mụ hỡnh cu trỳc logic (Structure), v mụ hỡnh lung d liu (RTL). Tuy nhiờn mụ t cho mt h thng, trong mt kin trỳc cú th kt hp s dng 2 hoc c 3 mụ hỡnh mụ t trờn thc hin cho tng thnh phn con tng ng ca h thng s. 2.5.1 Cỳ phỏp cho mụ hỡnh lung d liu (RTL) : ARCHITECTURE architecture-name OF entity-name IS signal-declarations; kh a i bỏo tớn hi u BEGIN concurrent-statements; [...]... trong VHDL cú mc ớch s dng, phm vi s dng khỏc nhau, nhng chỳng cú cỳ phỏp khai bỏo chung nh sau: i_tng tờn_i_tng : kiu_d_liu {:=giỏ_tr_khi_to} 4 Kiu d liu trong VHDL Tất cả các đối tợng dữ liệu trong VHDL cần phải đợc định nghĩa với một kiểu dữ liệu Một khai báo kiểu phải chỉ ra tên và dải của kiểu đó Khai báo kiểu dữ liệu chúng đợc phép khai báo trong phần khai báo các đóng gói, trong phần khai báo. .. báo trong phần khai báo các đóng gói, trong phần khai báo Entity, trong phần khai báo kiến trúc, trong phần khai báo các chơng trình con và trong phần khai báo các Process Cỳ phỏp chung biu din kiu d liu trong VHDL nh sau: Type Tờn_kiu is gii_hn_giỏ_tr_ca_kiu; 4.1 Bit v Bit_vector : Loi Bit v Bit_vector c xỏc nh trc trong VHDL i tng ca nhng loi ny l giỏ tr 0 v 1 Loi Bit_vector l mt vector n gin ca loi... myOR PORT ( in1, in2: IN STD_LOGIC; out1: OUT STD_LOGIC); END COMPONENT; SIGNAL term1: STD_LOGIC; BEGIN U0: myOR PORT MAP (D, V, term1); S 8 Cu trỳc lnh tun t Cỏc lnh tun t nm trong mt process.Khi mụ phng chỳng s c thc hin ln lt v lp i lp li theo chu k vụ hn Cỏc cu trỳc lnh tun t c bn trong VHDL gm: Cõu lnh gỏn cho bin Cõu lnh gỏn cho tớn hiu Cõu lnh if Cõu lnh case Cõu lnh rng Null Cỏc lnh lp 8.1 Phộp gỏn bin Cỳ phỏp: bin := biu_thc Phộp gỏn bin c thc hin vi thi gian mụ phng bng 0,... then ; elsif (iu_kin_3) then ; else ; end if; 8.4 Lnh case Lnh case c s dng trong trng hp cú mt biu thc kim soỏt nhiu r nhỏnh trong chng trỡnh VHDL Cỏc lnh tng ng vi mt trong cỏc la chn s c thc hiu nu biu thc kim soỏt cú giỏ tr bng giỏ tr tng ng ca la chn ú.Cn ch rừ giỏ tr ca biu thc la chn,trỏnh b trựng lp giỏ tr Cú 2 cỳ phỏp chớnh: Dng 1: Case . BÁO CÁO ĐỀ TÀI SINH VIÊN ĐỀ TÀI:BÁO CÁO MẠCH SỐ BẰNG VHDL Mã số: -ĐT-SV-2011 I. Giới thiệu chung về công nghệ logic khả trình CPLD/FPGA II. Tìm hiểu ngôn ngữ mô tả phần cứng VHDL . VDHL. các khai báo các đối tượng,khai báo thủ tục, hàm Entity: (Thực thể) - cho phép khai báo các giao diện của một khối thiết kế số nào đó: như khai báo các cổng vào/ra, các tham số của khối mạch -. IEEE.STD_LOGIC_1164.ALL; Khai báo thực thể Entity Tên_thực_thể is Khai báo các tham số generic nếu cần: Generic( khai báo danh sách các tham số) ; Port( Khai báo danh sách các cổng vào/ra ); End

Ngày đăng: 26/10/2014, 20:33

Từ khóa liên quan

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

Tài liệu liên quan