1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

ĐIỆN tử VIỄN THÔNG 3 vhdl khotailieu

88 108 1

Đ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 88
Dung lượng 769,5 KB

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

Nội dung

Chế độ signal_mode cho biết chiều dữ liệu được truyền nhận: được sử dụng bên trong  INOUT Dữ liệu là hai chiều đi vào và ra  BUFFER Dữ liệu đi ra khỏi ENTITY và cũng được đưa quay trở

Trang 1

NGÔN NGỮ VHDL

Trang 2

Tài liệu tham khảo

 Text Book:

 Circuit Design with VHDL, Volnei A.Pedroni, MIT press.

 VHDL Programming by Examples, Douglas L.Perry, McGraw Hill.

 Reference Books:

 1076 IEEE Standard Vhdl Language Reference

Manual 2002, IEEE Computer Society.

 Microprocessor Design Principles and Practices with VHDL, Enoch O Hwang.

 HDL Chip Design- A Practical Guide for Designing, Synthesizing and Simulating ASICs and FPGAs using VHDL or Verilog, Douglas J.Smith.

Trang 3

Phần mềm học tập

Trang 4

Nội dung môn học

 3 Thiết kế mạch với ngôn ngữ VHDL

 7 Máy hữu hạn trạng thái.

 8 Phương pháp thiết kế đa cấp

Trang 5

Nội dung môn học

 I Thiết kế mạch với ngôn ngữ VHDL.

 7 Máy hữu hạn trạng thái.

 8 Phương pháp thiết kế đa cấp (Packages, Components, Subprogram).

 9 Attibutes & Configurations.

 II Thiết kế CPU.

Trang 6

1 Giới thiệu ngôn ngữ VHDL.

Trang 7

1 Giới thiệu ngôn ngữ

VHDL.

 VHDL là gì?

 Một ngôn ngữ mô tả phần cứng:

 VHDL - VHSIC Hardware Description Language

 VHSIC - Very High Speed Integrated Circuits

 Là chuẩn do Bộ QP Mỹ phát triển từ thập niên 70 Dựa trên ngôn ngữ lập trình ADA, nhằm tạo ra tài liệu mô tả hoạt động của các mạch điện tử.

 1987 được IEEE chuẩn hóa trong IEEE 1076-1987

 1993 hoàn thiện lại thành IEEE 1076-1993

 2002 giải quyết vấn đề protected types=>IEEE 2002

Trang 8

1076-1 Giới thiệu ngôn ngữ

VHDL.

 VHDL là chuẩn độc lập mô tả hệ thống:

 Các nhà phát triển hệ thống dựa trên VHDL để

tả , thiết kế hệ thống.

 Các phần mềm mô phỏng có thể thực hiện mô

phỏng hoạt động của hệ thống mô tả.

 Các phần mềm tổng hợp có thể thực hiện tổng

hợp sinh ra mạch thực để thực hiện hệ thống

 Mạch sau khi tổng hợp có thể được nạp xuống chip

để thực hiện chức năng mô tả.

 Chức năng: mô tả hoạt động của các hệ thống hoặc mạch điện tử nhằm thực hiện các hệ

thống hoặc mạch này trên linh kiện thực.

Trang 9

1 Giới thiệu ngôn ngữ

VHDL.

 Ưu điểm của VHDL:

 Cho phép hoạt động của hệ thống được mô

tả (modeled) và kiểm thử (simulated) trước khi các công cụ tổng hợp “dịch” thiết kế

sang phần cứng thực tế (gates and wires).

 Cho phép mô tả hệ thống song song.

 Khi các mô hình VHDL được “dịch” sang

“gates and wires” thì nó có thể được nạp lên phần cứng CPLD và FPGA để thực thi.

Trang 10

1 Giới thiệu ngôn ngữ

VHDL.

 PLD (Programmable Logic Device):

 CPLD (Complex PLD)

 FPGA (Field Programmable Gate Array).

 ASIC (Application-Specific IC)

Trang 11

Quy trình thiết kế mạch dựa trên VHDL

Trang 12

Các công cụ thiết kế VHDL

 Bộ công cụ của nhà sản xuất chip:

 Quartus/Maxplus => tổng hợp VHDL code lên chip CPLD/FPGA của Altera.

 ISE => tổng hợp VHDL code lên chip

CPLD/FPGA của Xilinx.

 Một số công cụ của các hãng thứ ba:

Trang 13

Một ví dụ VHDL đơn giản

Trang 15

Nội dung môn học

 I Thiết kế mạch với ngôn ngữ VHDL.

 7 Máy hữu hạn trạng thái.

 8 Phương pháp thiết kế đa cấp (Packages, Components, Subprogram).

 9 Attibutes & Configurations.

 II Thiết kế CPU.

Trang 16

s <= a xor b xor cin;

cout <= (a and b) or (a and cin)

or (b and cin);

end dataflow;

Trang 17

Cấu trúc code

Trang 18

Thư viện LIBRARY

Trang 19

Thư viện LIBRARY

Trang 20

Thư viện LIBRARY

 ieee.std_logic_1164 (from the ieee

library),

 standard (from the std library), and

 work (LIBRARY ieee; work library). A semi-colon (;) indicates

USE ieee.std_logic_1164.all; the end of a statement or

LIBRARY std; declaration, while a doubleUSE std.standard.all; dash ( ) indicates

acomment

LIBRARY work;

USE work.all;

Trang 21

Thư viện LIBRARY

Trang 22

Thư viện LIBRARY

 Thư viện IEEE:

Trang 23

Cấu trúc code

Trang 24

BLACK_BOX rst

d[7:0]

clk

q[7:0] co

Trang 25

 IN, OUT, INOUT (2chiều), BUFFER (khi tín hiệu ra được dùng cho các tín hiệu khác bên trong).

Trang 26

Chế độ signal_mode cho biết chiều dữ liệu được truyền nhận:

được sử dụng bên trong)

 INOUT Dữ liệu là hai chiều (đi vào và ra)

 BUFFER Dữ liệu đi ra khỏi ENTITY và cũng

được đưa quay trở lại vào trong

Entity

Trang 27

Ví dụ về ENTITY

ENTITY mux IS PORT (a, b: IN std_logic_vector(7 downto 0); sel: IN STD_LOGIC_VECTOR(0 to 1); c: OUT STD_LOGIC_VECTOR(7 downto 0)); END mux;

Trang 28

Cấu trúc code

Trang 29

hoạt động như thế nào.

Một ARCHITECTURE luôn gắn với một ENTITY và mô tả

hoạt động của ENTITY đó.

Một ARCHITECTURE chỉ gắn với một ENTITY nhưng

Một ENTIY có thể có nhiều ARCHITECTURE khác nhau

Trang 30

 Phần khai báo (optional)

 Khai báo tín hiệu và biến.

 Phần mã code:

 Mô tả cách kết nối, hoạt động của mạch.

Trang 32

s,cout:out std_logic);

END full_adder;

Architecture dataflow of full_adder is begin

s <= a xor b xor cin;

cout <= (a and b) or (a and cin) or

(b and cin); end dataflow;

Adder

A(7:0)

B(7:0)

C(7:0)

Trang 33

library IEEE;

use IEEE.std_logic_1164.all;

ENTITY adder IS PORT (A,B: IN std_logic_vector(7 downto 0);

C: OUT std_logic_vector(7 downto 0));

Trang 34

VD2: D Flip-flop, asyn reset

D flip-flop tích cực theo sườn dương của

xung đồng hồ clk với tín hiệu reset

-PORT ( d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC);

END dff;

ARCHITECTURE behavior OF dff IS BEGIN

-PROCESS (rst, clk) BEGIN

Trang 36

VD2: RS Flip-flop, asyn reset

elsif (r='1' and s='0') then q<='0';

elsif (r='1' and s='1') then q<= '-';

end if;

END IF;

END PROCESS;

END behavior;

Trang 37

VD3: asyn-reset DFF &

NAND

ENTITY example IS PORT ( a, b, clk: IN BIT;

q: OUT BIT);

END example;

ARCHITECTURE example OF example IS SIGNAL temp : BIT;

BEGIN temp <= a NAND b;

PROCESS (clk) BEGIN

IF (clk'EVENT AND clk='1') THEN q<=temp; END IF;

Trang 38

VD4: Bộ dồn kênh Multilpexor

a,b: hai kênh vào 8bit

sel: các bit chọn kênh

c: kênh ra 8bit

Trang 39

VD4: Bộ dồn kênh Multilpexor

c : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));

END ENTITY mux;

Trang 40

 Sử dụng phần mềm ActiveHDL thiết kế

và mô phỏng bộ cộng đầy đủ:

 Tạo workspace làm việc.

 Tạo một mạch thiết kế design.

 Viết VHDL source code.

 Thêm file vào design.

 Dịch workspace.

 Đưa tín hiệu vào dạng waveform mô phỏng.

Trang 41

Nội dung môn học

 I Thiết kế mạch với ngôn ngữ VHDL.

 7 Máy hữu hạn trạng thái.

 8 Phương pháp thiết kế đa cấp (Packages, Components, Subprogram).

 9 Attibutes & Configurations.

 II Thiết kế CPU.

Trang 43

3.1 Các kiểu đối tượng

các loại sau:

 Signal: biểu diễn cho dây kết nối giữa

các cổng của các thành phần trong hệ thống.

 Variable: được sử dụng lưu trữ dữ liệu

nội bộ tạm thời, chỉ visible bên trong

process.

 Constant: hẳng số

Trang 44

3.1.1 Signal

để kết nối - truyền thông giữa các entity nhằm tạo nên hệ thống.

Signal

Trang 45

3.1.1 Signal

 External Signal: là các tín hiệu kết nối

hệ thống với bên ngoài, tạo nên giao diện ghép nối của hệ thống với các hệ thống khác

 Internal Signal: là các tín hiệu chỉ

nhúng bên trong hệ thống, không nhìn thấy từ bên ngoài, tạo ra sự truyền

thông giữa các thành phần bên trong

hệ thống.

Trang 46

Khai báo trong Entity

Khai báo trong Architecture

ENTITY myboard IS

PORT ( [SIGNAL] a,b,c: inout bit;

data,extbus,result: inout bit_vector(0 to 7));

Trang 47

3.1.1 Signal

 Phần khai báo của ENTITY

 Phần khai báo của ARCHITECTURE

 Phần khai báo của PACKAGE

SIGNAL name: mode type [:=initial_value]

Không cần trong ENTITY Chỉ cần trong ENTITY

Trang 49

3.1.1 Signal

 Phạm vi tác động của khai báo signal:

 Một signal được khai báo trong PACKAGE thì

sử dụng được (visible) trong tất cả các thiết

kế sử dụng gói package này.

 Một signal được khai báo trong ENTITY thì sử dụng được (visible) trong tất cả các

ARCHITECTURE gắn với ENTITY này.

 Một signal được khai báo trong phần khai

báo của ARCHITECTURE thì chỉ sử dụng được trong architecture này.

 Một signal được khai báo trong 1 khối

(block) bên trong ARCHITECTURE thì chỉ sử dụng được bên trong khối đó.

Trang 51

3.1.1 Signal

signal khi được sử dụng bên trong một phần của mã tuần tự (vd

PROCESS, FUNCTION, PROCEDURE) là:

 Giá trị không được cập nhật ngay lập tức sau câu lệnh, mà phải đến kết

thúc đoạn mã tuần tự đó.

Về nhà tìm hiểu, hôm sau hỏi

Trang 52

3.1.2 Biến (variable)

liệu nội bộ, chỉ có thể sử dụng bên trong PROCESS, FUNCTION, hoặc PROCEDURE.

truyền ra ngoài trực tiếp.

tiếp sau từng dòng mã lệnh.

Trang 53

3.1.2 Biến (variable)

 VARIABLE name: type [range] [:= init_value];

VARIABLE control: BIT := '0';

VARIABLE count: INTEGER RANGE 0 TO 100;

VARIABLE y: STD_LOGIC_VECTOR (7 DOWNTO 0) := "10001000";

Trang 54

-PORT ( din: IN STD_LOGIC_VECTOR (7 DOWNTO 0); ones: OUT INTEGER RANGE 0 TO 8);

END count_ones;

ARCHITECTURE ok OF count_ones IS BEGIN

PROCESS (din) VARIABLE temp: INTEGER RANGE 0 TO 8; BEGIN

temp := 0;

FOR i IN 0 TO 7 LOOP

IF (din(i)='1') THEN temp := temp + 1;

Trang 55

-ARCHITECTURE not_ok OF mux IS

SIGNAL sel : INTEGER RANGE 0 TO 3;

BEGIN

PROCESS (a, b, c, d, s0, s1)

BEGIN

sel <= 0;

IF (s0='1') THEN sel <= sel + 1;END IF;

IF (s1='1') THEN sel <= sel + 2;END IF;

-PORT ( a, b, c, d, s0, s1: IN STD_LOGIC; 7y: OUT STD_LOGIC);

END mux;

ARCHITECTURE ok OF mux IS BEGIN

PROCESS (a, b, c, d, s0, s1) VARIABLE sel : INTEGER RANGE 0 TO 3; BEGIN

sel := 0;

IF (s0='1') THEN sel := sel + 1; END IF;

IF (s1='1') THEN sel := sel + 2; END IF; CASE sel IS

Trang 56

So sánh giữa Signal & Variable

Trang 57

3.1.3 Hằng số (Constant)

 Hằng số Constant là các tên được gán cho các giá trị cụ thể của 1 kiểu DL Sử dụng hằng số cho phép người thiết kế xây dựng mô hình dễ hiểu (better-

documented) và dễ thay đổi.

 Khai báo hằng số:

 CONSTANT name : type := value;

 Hằng số có thể khai báo trong package,

entity hoặc architecture Phạm vi tác động giống như tín hiệu signal.

Trang 58

3.1.3 Hằng số (Constant)

CONSTANT set_bit : BIT := '1';

CONSTANT pi: REAL := 3.1414;

CONSTANT datamemory : memory := ( ('0','0','0','0'),

('0','0','0','1'), ('0','0','1','1'));

Trang 59

3.2 Các kiểu dữ liệu VHDL

Trang 60

3.2.1 Kiểu dữ liệu vô hướng

Trang 61

Kiểu số nguyên Integer

a := 1; Ok 1

a := -1; Ok 2

a := 1.0; error 3 END PROCESS;

END test;

Trang 63

Kiểu dữ liệu liệt kê

ENUMERATED

việc mô hình hóa trừu tượng, biểu diễn chính xác các giá trị cần cho tính toán.

TYPE bit IS ('0', '1');

TYPE bit_vector IS ARRAY (NATURAL RANGE <>) OF BIT;

TYPE fourval IS ( ‘X’, ‘0’, ‘1’, ‘Z’ );

TYPE state IS (idle, forward, backward, stop);

TYPE color IS ( red, yellow, blue, green, orange );

Trang 64

 Việc mã hóa các dữ liệu liệt kê

được thực hiện tuần tự và tự động

Ví dụ:

 TYPE color IS (red, green, blue, white);

 Có 4 dữ liệu liệt kê, dùng 2 bit biểu diễn, gán “00”=>red, “01”=>green,

“10”=>blue, “11”=>white.

Kiểu dữ liệu liệt kê

ENUMERATED

Trang 65

ENTITY traffic_light IS

PORT(sensor : IN std_logic;

clock : IN std_logic;

red_light : OUT std_logic;

green_light : OUT std_logic;

yellow_light : OUT std_logic);

END traffic_light;

-ARCHITECTURE simple OF traffic_light IS

TYPE t_state is (red, green, yellow);

Signal present_state, next_state : t_state;

ELSE next_state <= red;

END PROCESS;

END simple;

Trang 66

Kiểu dữ liệu PHYSICAL

 Kiểu dữ liệu Physical được dùng để biểu diễn các đại lượng vật lý như khoảng

cách, thời gian, dòng điện…

 Kiểu dữ liệu Physical không chỉ chỉ ra đối tượng mà còn chỉ ra cả các đơn vị

mà đối tượng đó có thể có.

TYPE current IS RANGE 0 to 1000000000 UNITS

na; nano amps

ua = 1000 na; micro amps

ma = 1000 ua; milli amps

a = 1000 ma; amps END UNITS;

Primary unit

Secondary units

Trang 67

Kiểu dữ liệu PHYSICAL

kiểu dữ liệu physical đó là time:

TYPE TIME IS RANGE -2147483647 to 2147483647

Trang 68

PACKAGE example IS

TYPE current IS RANGE 0 TO 1000000000

UNITS

na; nano amps

ua = 1000 na; micro amps

ma = 1000 ua; milli amps

a = 1000 ma; amps END UNITS;

TYPE load_factor IS (small, med, big );

delay <= 10 ns WHEN (load = small) ELSE

delay <= 20 ns WHEN (load = med) ELSE

delay <= 30 ns WHEN (load = big) ELSE

delay <= 10 ns;

out_current <= 100 ua WHEN (load = small)ELSE out_current <= 1 ma WHEN (load = med) ELSE out_current <= 10 ma WHEN (load = big) ELSE out_current <= 100 ua;

END delay_calc;

Trang 69

3.2.2 Kiểu dữ liệu tổng hợp

hợp(CompositeTypes)

 Kiểu mảng (Array Types)

 Kiểu bản ghi (Record Types)

Trang 70

Kiểu mảng (Array Types)

 Kiểu dữ liệu mảng nhóm các phần tử

cùng kiểu với nhau như là 1 đối tượng đơn Các phần tử trong mảng được truy nhập bằng chỉ số.

 Ba loại mảng hay dùng:

1D

Trang 71

Kiểu mảng (Array Types)

 Thực tế, các kiểu dữ liệu định nghĩa sẵn trong VHDL chỉ bao gồm kiểu vô hướng

và vector (mảng một chiều của các bit)

 Các kiểu DL định nghĩa sẵn có thể tổng hợp bao gồm:

 Scalars: BIT, STD_LOGIC, STD_ULOGIC, and BOOLEAN.

 Vectors: BIT_VECTOR, STD_LOGIC_VECTOR, STD_ULOGIC_VECTOR, INTEGER, SIGNED, and UNSIGNED.

Trang 72

Kiểu mảng (Array Types)

Trang 73

Kiểu mảng (Array Types)

TYPE row IS ARRAY (7 DOWNTO 0) OF STD_LOGIC; 1D array

TYPE matrix IS ARRAY (0 TO 3) OF row; 1Dx1D array

SIGNAL x: matrix; 1Dx1D signal

-TYPE matrix IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(7 DOWNTO 0);

TYPE matrix2D IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;

2D array

Trang 74

Kiểu mảng (Array Types)

 :="0001"; for 1D array

 :=('0','0','0','1') for 1D array

 :=(('0','1','1','1'), ('1','1','1','0')); for 1Dx1D or

2D array

Trang 75

Ví dụ về mảng 1D

PACKAGE array_example IS

TYPE data_bus IS ARRAY(0 TO 31) OF BIT; TYPE small_bus IS ARRAY(0 TO 7) OF BIT; END array_example;

USE WORK.array_example.ALL;

-ENTITY extract IS PORT ( data : IN data_bus;

FOR i IN 0 TO 7 LOOP data_out(i) <= data(i + start);

END LOOP;

END PROCESS;

END test;

Trang 76

Ví dụ về mảng 1Dx1D

LIBRARY IEEE;

USE IEEE.std_logic_1164.ALL;

PACKAGE memory IS

CONSTANT width : INTEGER := 3;

CONSTANT memsize : INTEGER := 7;

TYPE data_out IS ARRAY(0 TO width)

PORT( addr : IN INTEGER;

PORT( data : OUT data_out;

BEGINASSERT addr <= memsizeREPORT “addr out of range”

SEVERITY ERROR;

data <= rom_data(addr) AFTER 10 ns WHEN cs

= ‘1’ ELSEdata <= z_state AFTER 20 ns WHEN cs = ‘0’ ELSE

data <= x_state AFTER 10 ns;

END basic;

Trang 77

Kiểu mảng không ràng

buộc

kích thước (Unconstrained arrays):

 Kích thước mảng không được chỉ ra khi khai báo.

 Kích thước mảng sẽ được chỉ ra khi khai báo signal/variable/constant sử dụng kiểu mảng này.

TYPE BIT_VECTOR IS ARRAY(NATURAL RANGE <>) OF BIT;

Trang 78

Kiểu dữ liệu con subtype

dụng để định nghĩa các tập con của một kiểu dữ liệu Tập con có thể chứa tòan bộ khoảng giá trị

của kiểu cơ sở những cũng có thể chỉ chứa một phần.

TYPE INTEGER IS -2,147,483,647 TO +2,147,483,647;

SUBTYPE NATURAL IS INTEGER RANGE 0 TO +2,147,483,647;

Trang 79

Ví dụ về khai báo subtype

PACKAGE mypack IS

SUBTYPE eightbit IS BIT_VECTOR(0 TO 7);

SUBTYPE fourbit IS BIT_VECTOR(0 TO 3);

FUNCTION shift_right(val : BIT_VECTOR) RETURN BIT_VECTOR;

END mypack;

-PACKAGE BODY mypack IS

FUNCTION shift_right(val : BIT_VECTOR) RETURN BIT_VECTOR

IS VARIABLE result : BIT_VECTOR(0 TO (val’LENGTH -1));

BEGIN

result := val;

IF (val’LENGTH > 1) THEN FOR i IN 0 TO (val’LENGTH -2) LOOP result(i) := result(i 1);

END LOOP;

result(val’LENGTH -1) := 0;

ELSE result(0) := 0;

END IF;

RETURN result;

END shift_right;

END mypack;

Trang 80

Kiểu bản ghi record

 Kiểu dữ liệu bản ghi nhóm các đối

tượng có kiểu khác nhau như một đối tượng duy nhất.

 Mỗi thành phần của bản ghi có thể

được truy cập bằng tên trường của nó.

 Các thành phần của bản ghi có thể

cùng kiểu hoặc khác kiểu dữ liệu Kiểu

dữ liệu có thể bao gồm cả mảng và

bản ghi.

Trang 81

Kiểu bản ghi record

TYPE optype IS ( add, sub, mpy, div, jmp ); TYPE instruction IS

RECORD opcode : optype;

src : INTEGER;

dst : INTEGER;

END RECORD;

Ngày đăng: 12/11/2019, 13:22

TỪ KHÓA LIÊN QUAN

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

w