SlideShare una empresa de Scribd logo
1 de 100
Thiết kế nhờ máy tính Nguyễn Thành Kiên Bộ môn Kỹ thuật Máy tính Khoa Công nghệ thông tin, ĐH BKHN
Tài liệu tham khảo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Phần mềm học tập ,[object Object],[object Object],[object Object],[object Object]
Giảng viên ,[object Object],[object Object],[object Object],[object Object],[object Object]
Yêu cầu môn học ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Nội dung môn học ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Nội dung môn học ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
1. Giới thiệu ngôn ngữ VHDL. ,[object Object],[object Object],[object Object],Phương pháp thiết kế truyền thống
1. Giới thiệu ngôn ngữ VHDL. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
1. Giới thiệu ngôn ngữ VHDL. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
1. Giới thiệu ngôn ngữ VHDL. ,[object Object],[object Object],[object Object],[object Object]
1. Giới thiệu ngôn ngữ VHDL. ,[object Object],[object Object],[object Object],[object Object],[object Object]
Quy trình thiết kế mạch dựa trên VHDL
Các công cụ thiết kế VHDL ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Một ví dụ VHDL đơn giản
Một ví dụ VHDL đơn giản
Nội dung môn học ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Code structure library IEEE;   use IEEE.std_logic_1164.all; ENTITY full_adder IS PORT (a,b,cin: in bit; s,cout:out bit); 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;
Cấu trúc code ,[object Object],[object Object],[object Object]
Thư viện LIBRARY ,[object Object]
Thư viện LIBRARY ,[object Object]
Thư viện LIBRARY ,[object Object],[object Object],[object Object],[object Object],LIBRARY ieee;    -- A semi-colon (;) indicates USE ieee.std_logic_1164.all;  -- the end of a statement or LIBRARY std;    -- declaration, while a double USE std.standard.all;    -- dash (--) indicates acomment. LIBRARY work; USE work.all;
Thư viện LIBRARY ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Thư viện LIBRARY ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cấu trúc code ,[object Object],[object Object],[object Object]
ENTITY ,[object Object],[object Object],BLACK_BOX rst d[7:0] clk q[7:0] co
ENTITY ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ENTITY ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Entity
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;
Cấu trúc code ,[object Object],[object Object],[object Object]
ARCHITECTURE ,[object Object],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 ?
ARCHITECTURE ,[object Object],[object Object],[object Object],[object Object],[object Object]
ARCHITECTURE ,[object Object],Mô tả kết nối mạch: Mạch thực hiện thao  tác NAND trên 2 đầu  vào (a,b) và gán (<=)  kết quả cho đầu ra x.
VD1: Full_adder ,[object Object],library IEEE;   use IEEE.std_logic_1164.all; ENTITY full_adder IS PORT (a,b,cin: in std_logic; 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)
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)); END adder; Architecture dataflow of adder is begin C <= A+B; end dataflow; Adder A(7:0) B(7:0) C(7:0)
VD2: D Flip-flop, asyn reset ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],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 không đồng bộ. Hoạt động: + rst = ‘1’ => q<=‘0’ không phụ thuộc clk. + rst = ‘0’, sườn dương clk => q<=d. DEMO
VD2: RS Flip-flop, asyn reset ,[object Object],[object Object]
VD2: RS Flip-flop, asyn reset ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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; END PROCESS; END example; --------------------------------------- Sự kết hợp giữa mạch  tổ hợp và mạch dãy DEMO
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
VD4: Bộ dồn kênh Multilpexor ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Demostration ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Nội dung môn học ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3. Các kiểu dữ liệu. ,[object Object],[object Object],[object Object],[object Object],[object Object]
3.1. Các kiểu đối tượng ,[object Object],[object Object],[object Object],[object Object]
3.1.1. Signal ,[object Object],Signal
3.1.1. Signal ,[object Object],[object Object],[object Object]
3.1.1. Signal ,[object Object],External Signal Internal Signal 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)); END myboard; ARCHITECTURE structure OF myboard IS SIGNAL x,y: bit; SIGNAL intbus: bit_vector(0 to 7); BEGIN
3.1.1. Signal ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Không cần trong ENTITY Chỉ cần trong ENTITY
3.1.1. Signal ,[object Object],LIBRARY IEEE;  USE IEEE.std_logic_1164.ALL; PACKAGE sigdecl IS TYPE bus_type IS ARRAY(0 to 7) OF std_logic; SIGNAL vcc  : std_logic := ‘1’; SIGNAL ground : std_logic := ‘0’; FUNCTION magic_function( a : IN bus_type) RETURN bus_type; END sigdecl; => USE WORK.sigdecl.ALL;
3.1.1. Signal ,[object Object],[object Object],[object Object],[object Object],[object Object]
3.1.1. Signal ,[object Object],A B C D E F
3.1.1. Signal ,[object Object],[object Object],Về nhà tìm hiểu, hôm sau hỏi
3.1.2. Biến (variable) ,[object Object],[object Object],[object Object]
3.1.2. Biến (variable) ,[object Object],[object Object],VARIABLE control: BIT := '0'; VARIABLE count: INTEGER RANGE 0 TO 100; VARIABLE y: STD_LOGIC_VECTOR (7 DOWNTO 0) := &quot;10001000&quot;;
Ví dụ về sử dụng variable trong VHDL ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------- ENTITY mux IS PORT ( a, b, c, d, s0, s1: IN STD_LOGIC; y: OUT STD_LOGIC); END mux; ----------------------------------------- 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; CASE sel IS WHEN 0 => y<=a; WHEN 1 => y<=b; WHEN 2 => y<=c; WHEN 3 => y<=d; END CASE; END PROCESS; END not_ok; LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------- ENTITY mux IS 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 WHEN 0 => y<=a; WHEN 1 => y<=b; WHEN 2 => y<=c; WHEN 3 => y<=d; END CASE; END PROCESS; END ok;
So sánh giữa Signal & Variable
3.1.3. Hằng số (Constant) ,[object Object],[object Object],[object Object],[object Object]
3.1.3. Hằng số (Constant) ,[object Object],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'));
3.2. Các kiểu dữ liệu VHDL
3.2.1. Kiểu dữ liệu vô hướng ,[object Object],[object Object],[object Object],[object Object],[object Object]
Kiểu số nguyên Integer ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kiểu số thực Real ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kiểu dữ liệu liệt kê ENUMERATED ,[object Object],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 ); Các kiểu  dữ liệu  liệt kê đã định nghĩa  trước
[object Object],[object Object],[object Object],Kiểu dữ liệu liệt kê ENUMERATED
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; BEGIN PROCESS(present_state, sensor) BEGIN CASE present_state IS WHEN green => next_state <= yellow; red_light <= ‘0’; green_light <= ‘1’; yellow_light <= ‘0’; WHEN red => red_light <= ‘1’; green_light <= ‘0’; yellow_light <= ‘0’; IF (sensor = ‘1’) THEN next_state <= green; ELSE next_state <= red; END IF; WHEN yellow => red_light <= ‘0’; green_light <= ‘0’; yellow_light <= ‘1’; next_state <= red; END CASE; END PROCESS; PROCESS BEGIN WAIT UNTIL clock’EVENT and clock=‘1’; present_state <= next_state; END PROCESS; END simple;
Kiểu dữ liệu PHYSICAL ,[object Object],[object Object],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
Kiểu dữ liệu PHYSICAL ,[object Object],TYPE TIME IS RANGE -2147483647 to 2147483647 UNITS fs;  --femtosecond ps  =  1000 fs;  --picosecond ns  =  1000 ps;  --nanosecond us  =  1000 ns;  --microsecond ms  =  1000 us; --millisecond sec  =  1000 ms; --second min  =  60 sec;  --minute hr  =  60 min;  --hour END UNITS;
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3.2.2. Kiểu dữ liệu tổng hợp ,[object Object],[object Object],[object Object]
Kiểu mảng (Array Types) ,[object Object],[object Object],1D 1Dx1D 2D
Kiểu mảng (Array Types) ,[object Object],[object Object],[object Object],[object Object]
Kiểu mảng (Array Types) ,[object Object],[object Object],[object Object],[object Object],TYPE data_bus IS ARRAY(0 TO 31) OF BIT; VARIABLE X: data_bus; VARIABLE Y: BIT; Y := X(0);  --line 1 Y := X(15);  --line 2
Kiểu mảng (Array Types) ,[object Object],[object Object],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
Kiểu mảng (Array Types) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Ví dụ về mảng 1D ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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)  OF std_logic; TYPE mem_data IS ARRAY(0 TO memsize)  OF data_out; END memory; LIBRARY IEEE;  USE IEEE.std_logic_1164.ALL; USE WORK.memory.ALL; ENTITY rom IS PORT( addr : IN INTEGER; PORT( data : OUT data_out; PORT( cs  : IN std_logic); END rom; ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kiểu mảng không ràng buộc ,[object Object],[object Object],[object Object],TYPE BIT_VECTOR IS ARRAY(NATURAL RANGE <>) OF BIT;
Kiểu dữ liệu con subtype ,[object Object],TYPE INTEGER IS -2,147,483,647 TO +2,147,483,647; SUBTYPE NATURAL IS INTEGER RANGE 0 TO +2,147,483,647;
Ví dụ về khai báo subtype ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kiểu bản ghi record ,[object Object],[object Object],[object Object]
Kiểu bản ghi record ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kiểu bản ghi record PROCESS(X) VARIABLE inst : instruction; VARIABLE source, dest : INTEGER; VARIABLE operator : optype; BEGIN source := inst.src;  --Ok line 1 dest  := inst.src;  --Ok line 2 source := inst.opcode;  --error line 3 operator := inst.opcode;  --Ok line 4 inst.src  := dest;  --Ok line 5 inst.dst := dest;  --Ok line 6 inst := (add, dest, 2);  --Ok line 7 inst := (source);  --error line 8 END PROCESS; ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Kiểu bản ghi record TYPE word IS ARRAY(0 TO 3) OF std_logic; TYPE t_word_array IS ARRAY(0 TO 15) OF word; TYPE addr_type IS RECORD source : INTEGER; key  : INTEGER; END RECORD; TYPE data_packet IS RECORD addr : addr_type; data : t_word_array; checksum : INTEGER; parity : BOOLEAN; END RECORD; PROCESS(X) VARIABLE packet : data_packet; BEGIN packet.addr.key := 5;  --Ok packet.addr := (10, 20);  --Ok packet.data(0) := (‘0’, ‘0’, ‘0’, ‘0’); packet.data(10)(4) := ‘1’;  --error packet.data(10)(0) := ‘1’;  --Ok  END PROCESS;
Kiểu dữ liệu File ,[object Object],[object Object]
Kiểu dữ liệu File ,[object Object],[object Object],[object Object],[object Object]
Kiểu dữ liệu File ,[object Object],[object Object],[object Object],[object Object]
Ví dụ về truy cập file ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Các kiểu DL có thể tổng hợp
 
Đề tài môn học Thiết kế nhờ MT Nhóm: 6 người/nhóm
Đề tài môn học Thiết kế nhờ MT ,[object Object],[object Object],[object Object]
Đề tài phần 2 ( μ C) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Đề tài phần 2 (others) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object]
Đề tài phần 3 (ko làm) ,[object Object],[object Object]
Yêu cầu: ,[object Object],[object Object],[object Object],[object Object]
Tài liệu tham khảo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Más contenido relacionado

La actualidad más candente

Lập trình PLC S7 1200 tiếng Việt-Chuong 5 tập lệnh lập trình
Lập trình PLC S7 1200 tiếng Việt-Chuong 5 tập lệnh lập trìnhLập trình PLC S7 1200 tiếng Việt-Chuong 5 tập lệnh lập trình
Lập trình PLC S7 1200 tiếng Việt-Chuong 5 tập lệnh lập trìnhXuân Thủy Nguyễn
 
đồ áN cung cấp điện đề tài thiết kế cung câp điện cho phân xưởng sửa chữa thi...
đồ áN cung cấp điện đề tài thiết kế cung câp điện cho phân xưởng sửa chữa thi...đồ áN cung cấp điện đề tài thiết kế cung câp điện cho phân xưởng sửa chữa thi...
đồ áN cung cấp điện đề tài thiết kế cung câp điện cho phân xưởng sửa chữa thi...jackjohn45
 
Tài liệu thiết kế mạch in altium
Tài liệu thiết kế mạch in altiumTài liệu thiết kế mạch in altium
Tài liệu thiết kế mạch in altiumNgai Hoang Van
 
Bai giang-vhdl
Bai giang-vhdlBai giang-vhdl
Bai giang-vhdlhoangclick
 
Bài giảng kỹ thuật điều khiển tự động
Bài giảng kỹ thuật điều khiển tự độngBài giảng kỹ thuật điều khiển tự động
Bài giảng kỹ thuật điều khiển tự độngNguyễn Nam Phóng
 
Ứng dụng công nghệ IoT để thiết kế hệ thống giám sát và điều khiển thiết bị ...
 Ứng dụng công nghệ IoT để thiết kế hệ thống giám sát và điều khiển thiết bị ... Ứng dụng công nghệ IoT để thiết kế hệ thống giám sát và điều khiển thiết bị ...
Ứng dụng công nghệ IoT để thiết kế hệ thống giám sát và điều khiển thiết bị ...hieu anh
 
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdf
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdfThiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdf
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdfMan_Ebook
 
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...Man_Ebook
 

La actualidad más candente (20)

Lập trình PLC S7 1200 tiếng Việt-Chuong 5 tập lệnh lập trình
Lập trình PLC S7 1200 tiếng Việt-Chuong 5 tập lệnh lập trìnhLập trình PLC S7 1200 tiếng Việt-Chuong 5 tập lệnh lập trình
Lập trình PLC S7 1200 tiếng Việt-Chuong 5 tập lệnh lập trình
 
Đề tài: Hệ thống phân loại cà chua theo màu sắc, HAY, 9đ
Đề tài: Hệ thống phân loại cà chua theo màu sắc, HAY, 9đĐề tài: Hệ thống phân loại cà chua theo màu sắc, HAY, 9đ
Đề tài: Hệ thống phân loại cà chua theo màu sắc, HAY, 9đ
 
Đề tài: Thiết kế vòng tay đo nhịp tim sử dụng công nghệ IoTs, HAY
Đề tài: Thiết kế vòng tay đo nhịp tim sử dụng công nghệ IoTs, HAYĐề tài: Thiết kế vòng tay đo nhịp tim sử dụng công nghệ IoTs, HAY
Đề tài: Thiết kế vòng tay đo nhịp tim sử dụng công nghệ IoTs, HAY
 
Điều khiển thiết bị điện tử bằng Android thông qua Bluetooth, 9đ
Điều khiển thiết bị điện tử bằng Android thông qua Bluetooth, 9đĐiều khiển thiết bị điện tử bằng Android thông qua Bluetooth, 9đ
Điều khiển thiết bị điện tử bằng Android thông qua Bluetooth, 9đ
 
đồ áN cung cấp điện đề tài thiết kế cung câp điện cho phân xưởng sửa chữa thi...
đồ áN cung cấp điện đề tài thiết kế cung câp điện cho phân xưởng sửa chữa thi...đồ áN cung cấp điện đề tài thiết kế cung câp điện cho phân xưởng sửa chữa thi...
đồ áN cung cấp điện đề tài thiết kế cung câp điện cho phân xưởng sửa chữa thi...
 
Tài liệu thiết kế mạch in altium
Tài liệu thiết kế mạch in altiumTài liệu thiết kế mạch in altium
Tài liệu thiết kế mạch in altium
 
Do thi-smith-chart
Do thi-smith-chartDo thi-smith-chart
Do thi-smith-chart
 
Kho 200 đề tài luận văn tốt nghiệp ngành điện tử viễn thông, 9 điểm
Kho 200 đề tài luận văn tốt nghiệp ngành điện tử viễn thông, 9 điểmKho 200 đề tài luận văn tốt nghiệp ngành điện tử viễn thông, 9 điểm
Kho 200 đề tài luận văn tốt nghiệp ngành điện tử viễn thông, 9 điểm
 
Bai giang-vhdl
Bai giang-vhdlBai giang-vhdl
Bai giang-vhdl
 
Đề tài: Mô phỏng kênh truyền vô tuyến số bằng matlab, 9đ
Đề tài: Mô phỏng kênh truyền vô tuyến số bằng matlab, 9đ Đề tài: Mô phỏng kênh truyền vô tuyến số bằng matlab, 9đ
Đề tài: Mô phỏng kênh truyền vô tuyến số bằng matlab, 9đ
 
Luận văn: Ứng dụng lập trình điều khiển thiết bị qua wifi, HOT
Luận văn: Ứng dụng lập trình điều khiển thiết bị qua wifi, HOTLuận văn: Ứng dụng lập trình điều khiển thiết bị qua wifi, HOT
Luận văn: Ứng dụng lập trình điều khiển thiết bị qua wifi, HOT
 
Bài giảng kỹ thuật điều khiển tự động
Bài giảng kỹ thuật điều khiển tự độngBài giảng kỹ thuật điều khiển tự động
Bài giảng kỹ thuật điều khiển tự động
 
Đồ Án Tốt Nghiệp Lưu Đồ Giải Thuật Và Chương Trình Điều Khiển.docx
Đồ Án Tốt Nghiệp Lưu Đồ Giải Thuật Và Chương Trình Điều Khiển.docxĐồ Án Tốt Nghiệp Lưu Đồ Giải Thuật Và Chương Trình Điều Khiển.docx
Đồ Án Tốt Nghiệp Lưu Đồ Giải Thuật Và Chương Trình Điều Khiển.docx
 
Đề tài: Điều khiển thiết bị bằng giọng nói qua Google Asstiant, 9đ
Đề tài: Điều khiển thiết bị bằng giọng nói qua Google Asstiant, 9đĐề tài: Điều khiển thiết bị bằng giọng nói qua Google Asstiant, 9đ
Đề tài: Điều khiển thiết bị bằng giọng nói qua Google Asstiant, 9đ
 
Ứng dụng công nghệ IoT để thiết kế hệ thống giám sát và điều khiển thiết bị ...
 Ứng dụng công nghệ IoT để thiết kế hệ thống giám sát và điều khiển thiết bị ... Ứng dụng công nghệ IoT để thiết kế hệ thống giám sát và điều khiển thiết bị ...
Ứng dụng công nghệ IoT để thiết kế hệ thống giám sát và điều khiển thiết bị ...
 
Đề tài: Mô hình phân loại sản phẩm theo chiều cao, HAY, 9đ
Đề tài: Mô hình phân loại sản phẩm theo chiều cao, HAY, 9đĐề tài: Mô hình phân loại sản phẩm theo chiều cao, HAY, 9đ
Đề tài: Mô hình phân loại sản phẩm theo chiều cao, HAY, 9đ
 
Đề tài: Hệ thống giám sát điện năng tiêu thụ trong hộ gia đình
Đề tài: Hệ thống giám sát điện năng tiêu thụ trong hộ gia đìnhĐề tài: Hệ thống giám sát điện năng tiêu thụ trong hộ gia đình
Đề tài: Hệ thống giám sát điện năng tiêu thụ trong hộ gia đình
 
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdf
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdfThiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdf
Thiết kế và thi công thiết bị đo nhịp tim, nồng độ oxy trong máu và nhiệt độ.pdf
 
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
 
Đề tài: Hệ thống điều khiển tốc độ động cơ DC sử dụng bộ PID
Đề tài: Hệ thống điều khiển tốc độ động cơ DC sử dụng bộ PIDĐề tài: Hệ thống điều khiển tốc độ động cơ DC sử dụng bộ PID
Đề tài: Hệ thống điều khiển tốc độ động cơ DC sử dụng bộ PID
 

Similar a Vhdl

Vhdl Slides
Vhdl SlidesVhdl Slides
Vhdl Slideshoadktd
 
De-cuong-on-tap-NNMTPC.pdf
De-cuong-on-tap-NNMTPC.pdfDe-cuong-on-tap-NNMTPC.pdf
De-cuong-on-tap-NNMTPC.pdfAnhTVit1
 
Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr Ky Nguyen Ad
 
418 giaotrinh avr
418 giaotrinh avr418 giaotrinh avr
418 giaotrinh avranhhoi12345
 
Giaotrinh avr tech24.vn
Giaotrinh avr tech24.vnGiaotrinh avr tech24.vn
Giaotrinh avr tech24.vnbibibobo2007
 
Thietke ic baigiang.v1.0
Thietke ic baigiang.v1.0Thietke ic baigiang.v1.0
Thietke ic baigiang.v1.0ba191992
 
Bao cao tom tat nckh2015
Bao cao tom tat nckh2015Bao cao tom tat nckh2015
Bao cao tom tat nckh2015New Way
 
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...KhoTi1
 
Gioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picGioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picCu Bi
 
Tong quan ve_fpga__1226
Tong quan ve_fpga__1226Tong quan ve_fpga__1226
Tong quan ve_fpga__1226KowLoon1
 
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdfTài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdfMan_Ebook
 
Lập trình PLC S7 1200 tiếng Việt-Chuong 1 tổng quan thiết bị
Lập trình PLC S7 1200 tiếng Việt-Chuong 1 tổng quan thiết bịLập trình PLC S7 1200 tiếng Việt-Chuong 1 tổng quan thiết bị
Lập trình PLC S7 1200 tiếng Việt-Chuong 1 tổng quan thiết bịXuân Thủy Nguyễn
 
Giới thiệu CGAS Xcell-C RTU (sản phẩm của CGAS)
Giới thiệu CGAS Xcell-C RTU (sản phẩm của CGAS)Giới thiệu CGAS Xcell-C RTU (sản phẩm của CGAS)
Giới thiệu CGAS Xcell-C RTU (sản phẩm của CGAS)HaiPham949574
 
OOP_02_Java can ban.pdf
OOP_02_Java can ban.pdfOOP_02_Java can ban.pdf
OOP_02_Java can ban.pdfssuserd01a5c
 
Bai 1 Gioi Thieu Verilog Va Quartus
Bai 1   Gioi Thieu Verilog Va QuartusBai 1   Gioi Thieu Verilog Va Quartus
Bai 1 Gioi Thieu Verilog Va Quartusngoclanhoa116
 
BGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhBGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhCao Toa
 

Similar a Vhdl (20)

Vhdl Slides
Vhdl SlidesVhdl Slides
Vhdl Slides
 
De-cuong-on-tap-NNMTPC.pdf
De-cuong-on-tap-NNMTPC.pdfDe-cuong-on-tap-NNMTPC.pdf
De-cuong-on-tap-NNMTPC.pdf
 
Đề tài: Thiết kế một bộ chuyển đổi Analog – Digital (ADC) 8-Bits sử dụng chip...
Đề tài: Thiết kế một bộ chuyển đổi Analog – Digital (ADC) 8-Bits sử dụng chip...Đề tài: Thiết kế một bộ chuyển đổi Analog – Digital (ADC) 8-Bits sử dụng chip...
Đề tài: Thiết kế một bộ chuyển đổi Analog – Digital (ADC) 8-Bits sử dụng chip...
 
Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr
 
418 giaotrinh avr
418 giaotrinh avr418 giaotrinh avr
418 giaotrinh avr
 
Giaotrinh avr tech24.vn
Giaotrinh avr tech24.vnGiaotrinh avr tech24.vn
Giaotrinh avr tech24.vn
 
Thietke ic baigiang.v1.0
Thietke ic baigiang.v1.0Thietke ic baigiang.v1.0
Thietke ic baigiang.v1.0
 
Bao cao tom tat nckh2015
Bao cao tom tat nckh2015Bao cao tom tat nckh2015
Bao cao tom tat nckh2015
 
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...
 
Gioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picGioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-pic
 
Vi dieu khien_pic
Vi dieu khien_picVi dieu khien_pic
Vi dieu khien_pic
 
Tong quan ve_fpga__1226
Tong quan ve_fpga__1226Tong quan ve_fpga__1226
Tong quan ve_fpga__1226
 
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdfTài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
 
Lập trình PLC S7 1200 tiếng Việt-Chuong 1 tổng quan thiết bị
Lập trình PLC S7 1200 tiếng Việt-Chuong 1 tổng quan thiết bịLập trình PLC S7 1200 tiếng Việt-Chuong 1 tổng quan thiết bị
Lập trình PLC S7 1200 tiếng Việt-Chuong 1 tổng quan thiết bị
 
Giới thiệu CGAS Xcell-C RTU (sản phẩm của CGAS)
Giới thiệu CGAS Xcell-C RTU (sản phẩm của CGAS)Giới thiệu CGAS Xcell-C RTU (sản phẩm của CGAS)
Giới thiệu CGAS Xcell-C RTU (sản phẩm của CGAS)
 
Ch0
Ch0Ch0
Ch0
 
OOP_02_Java can ban.pdf
OOP_02_Java can ban.pdfOOP_02_Java can ban.pdf
OOP_02_Java can ban.pdf
 
Bai 1 Gioi Thieu Verilog Va Quartus
Bai 1   Gioi Thieu Verilog Va QuartusBai 1   Gioi Thieu Verilog Va Quartus
Bai 1 Gioi Thieu Verilog Va Quartus
 
Dsd05 01-rpca
Dsd05 01-rpcaDsd05 01-rpca
Dsd05 01-rpca
 
BGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhBGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tính
 

Vhdl

  • 1. Thiết kế nhờ máy tính Nguyễn Thành Kiên Bộ môn Kỹ thuật Máy tính Khoa Công nghệ thông tin, ĐH BKHN
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. Quy trình thiết kế mạch dựa trên VHDL
  • 14.
  • 15. Một ví dụ VHDL đơn giản
  • 16. Một ví dụ VHDL đơn giản
  • 17.
  • 18. Code structure library IEEE; use IEEE.std_logic_1164.all; ENTITY full_adder IS PORT (a,b,cin: in bit; s,cout:out bit); 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;
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29. 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;
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35. 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)); END adder; Architecture dataflow of adder is begin C <= A+B; end dataflow; Adder A(7:0) B(7:0) C(7:0)
  • 36.
  • 37.
  • 38.
  • 39. 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; END PROCESS; END example; --------------------------------------- Sự kết hợp giữa mạch tổ hợp và mạch dãy DEMO
  • 40. 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
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57. LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------- ENTITY mux IS PORT ( a, b, c, d, s0, s1: IN STD_LOGIC; y: OUT STD_LOGIC); END mux; ----------------------------------------- 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; CASE sel IS WHEN 0 => y<=a; WHEN 1 => y<=b; WHEN 2 => y<=c; WHEN 3 => y<=d; END CASE; END PROCESS; END not_ok; LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------- ENTITY mux IS 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 WHEN 0 => y<=a; WHEN 1 => y<=b; WHEN 2 => y<=c; WHEN 3 => y<=d; END CASE; END PROCESS; END ok;
  • 58. So sánh giữa Signal & Variable
  • 59.
  • 60.
  • 61. 3.2. Các kiểu dữ liệu VHDL
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67. 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; BEGIN PROCESS(present_state, sensor) BEGIN CASE present_state IS WHEN green => next_state <= yellow; red_light <= ‘0’; green_light <= ‘1’; yellow_light <= ‘0’; WHEN red => red_light <= ‘1’; green_light <= ‘0’; yellow_light <= ‘0’; IF (sensor = ‘1’) THEN next_state <= green; ELSE next_state <= red; END IF; WHEN yellow => red_light <= ‘0’; green_light <= ‘0’; yellow_light <= ‘1’; next_state <= red; END CASE; END PROCESS; PROCESS BEGIN WAIT UNTIL clock’EVENT and clock=‘1’; present_state <= next_state; END PROCESS; END simple;
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85. Kiểu bản ghi record TYPE word IS ARRAY(0 TO 3) OF std_logic; TYPE t_word_array IS ARRAY(0 TO 15) OF word; TYPE addr_type IS RECORD source : INTEGER; key : INTEGER; END RECORD; TYPE data_packet IS RECORD addr : addr_type; data : t_word_array; checksum : INTEGER; parity : BOOLEAN; END RECORD; PROCESS(X) VARIABLE packet : data_packet; BEGIN packet.addr.key := 5; --Ok packet.addr := (10, 20); --Ok packet.data(0) := (‘0’, ‘0’, ‘0’, ‘0’); packet.data(10)(4) := ‘1’; --error packet.data(10)(0) := ‘1’; --Ok END PROCESS;
  • 86.
  • 87.
  • 88.
  • 89.
  • 90. Các kiểu DL có thể tổng hợp
  • 91.  
  • 92. Đề tài môn học Thiết kế nhờ MT Nhóm: 6 người/nhóm
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.

Notas del editor

  1. The initial version of VHDL, designed to IEEE standard 1076-1987, included a wide range of data types, including numerical ( integer and real ), logical ( bit and boolean ), character and time , plus arrays of bit called bit_vector and of character called string . A problem not solved by this edition, however, was &amp;quot;multi-valued logic&amp;quot;, where a signal&apos;s drive strength (none, weak or strong) and unknown values are also considered. This required IEEE standard 1164 , which defined the 9-value logic types: scalar std_ulogic and its vector version std_ulogic_vector. The second issue of IEEE 1076 , in 1993, made the syntax more consistent, allowed more flexibility in naming, extended the character type to allow ISO-8859-1 printable characters, added the xnor operator, etc. Minor changes in the standard (2000 and 2002) added the idea of protected types (similar to the concept of class in C++) and removed some restrictions from port mapping rules. In addition to IEEE standard 1164, several child standards were introduced to extend functionality of the language. IEEE standard 1076.2 added better handling of real and complex data types. IEEE standard 1076.3 introduced signed and unsigned types to facilitate arithmetical operations on vectors. IEEE standard 1076.1 (known as VHDL-AMS ) provided analog and mixed-signal circuit design extensions. Some other standards support wider use of VHDL, notably VITAL (VHDL Initiative Towards ASIC Libraries) and microwave circuit design extensions. In June 2006, VHDL Technical Committee of Accellera (delegated by IEEE to work on next update of the standard) approved so called Draft 3.0 of VHDL-2006. While maintaining full compatibility with older versions, this proposed standard provides numerous extensions that make writing and managing VHDL code easier. Key changes include incorporation of child standards (1164, 1076.2, 1076.3) into the main 1076 standard, an extended set of operators, more flexible syntax of &apos;case&apos; and &apos;generate&apos; statements, incorporation of VHPI (interface to C/C++ languages) and a subset of PSL (Property Specification Language). These changes should improve quality of synthesizable VHDL code, make testbenches more flexible, and allow wider use of VHDL for system-level descriptions. In February 2008, Accellera approved VHDL 4.0 also informally known as VHDL 2008, which addressed more than 90 issues discovered during the trial period for version 3.0 and includes enhanced generic types. In 2008, Accellera plans to release VHDL 4.0 to the IEEE for balloting for inclusion in IEEE 1076-2008.
  2. A very important aspect of a SIGNAL, when used inside a section of sequential code (PROCESS, for example), is that its update is not immediate. In other words, its new value should not be expected to be ready before the conclusion of the corresponding PROCESS, FUNCTION or PROCEDURE.
  3. Contrary to CONSTANT and SIGNAL, a VARIABLE represents only local infor- mation. It can only be used inside a PROCESS, FUNCTION, or PROCEDURE (that is, in sequential code), and its value can not be passed out directly. On the other hand, its update is immediate, so the new value can be promptly used in the next line of code.
  4. Constant objects are names assigned to specific values of a type. Constants give the designer the ability to have a better-documented model, and a model that is easy to update. For instance, if a model requires a fixed value in a number of instances, a constant should be used. By using a constant, the designer can change the value of the constant and recompile,
  5. The encoding of enumerated types is done sequentially and automatically (unless specified otherwise by a user-defined attribute, as will be shown in chapter 4). For example, for the type color above, two bits are necessary (there are four states), being ‘‘00’’ assigned to the first state (red), ‘‘01’’ to the second (green), ‘‘10’’ to the next (blue), and finally ‘‘11’’ to the last state (white).
  6. Indeed, the pre-defined VHDL data types (seen in section 3.1) include only the scalar (single bit) and vector (one-dimensional array of bits) categories. The pre-defined synthesizable types in each of these categories are the following: Scalars: BIT, STD_LOGIC, STD_ULOGIC, and BOOLEAN. Vectors: BIT_VECTOR, STD_LOGIC_VECTOR, STD_ULOGIC_VECTOR, INTEGER, SIGNED, and UNSIGNED.
  7. Subtype declarations are used to define subsets of a type. The subset can contain the entire range of the base type but does not necessarily need to. A typical subtype adds a constraint or constraints to an existing type.
  8. Record types group objects of many types together as a single object. Each element of the record can be accessed by its field name. Record elements can include elements of any type, including arrays and records. The elements of a record can be of the same type or different types. Like arrays, records are used to model abstract data elements.
  9. Files consist of sequential streams of a particular type. A file whose base object type is INTEGER consists of a sequential stream of integers. This is shown in Figure 4-10.