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

Bài giảng Thiết kế logic số: Lecture 2.5 - TS. Hoàng Văn Phúc

42 68 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

Thông tin cơ bản

Định dạng
Số trang 42
Dung lượng 863,15 KB

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

Nội dung

Bài giảng Thiết kế logic số: Lecture 2.5 do TS. Hoàng Văn Phúc biên soạn nhằm mục đích phục vụ cho việc giảng dạy. Nội dung bài giảng gồm: Phát biểu đồng thời, mô hình FSM và testbench trên VHDL, nắm được cách sử dụng các phát biểu đồng thời, cách mô tả FSM và viết testbench trên VHDL.

Trang 1

Thiết kế logic số (VLSI design)

https://sites.google.com/site/phucvlsi/teaching

Chương 2: Ngôn ngữ VHDL

Bài giảng 5: Phát biểu đồng thời, mô hình FSM

và testbench trên VHDL

Giáo viên: Hoàng Văn Phúc

Bộ môn KT Xung-Số-Vi xử lý, Khoa Vô tuyến Điện tử

02/2017

Trang 2

 Nội dung : Phát biểu đồng thời; mô tả FSM; VHDL

testbench

 Thời lượng : 3 tiết bài giảng

 Phương pháp: Thuyết trình (Slides, Bảng), Thảo luận,

Minh hoạ trên ModelSim

 Yêu cầu : Đọc trước Slides và tài liệu GV đã gửi

 Mục tiêu : Nắm được cách sử dụng các phát biểu đồng

thời; cách mô tả FSM và viết testbench trên VHDL

 Tài liệu tham khảo :

 Giáo trình “Thiết kế logic số”, HVKTQS, 2012, chương 2

Circuit design with VHDL, MIT Press, 2005, chapter 5

Giới thiệu Bài giảng

Trang 3

VHDL khác với các ngôn ngữ lập trình khác như thế

nào?

Hai loại phát biểu trong VHDL: tuần tự và đồng thời

Các phát biểu tuần tự cơ bản: If, case, loop

tuần tự, cấu trúc mô phỏng kiểm tra

Nhắc lại bài cũ

Trang 4

Điểm khác biệt giữa phát biểu tuần tự và

đồng thời?

Phân biệt generic và constant trong VHDL?

Phân biệt các phát biểu gán tín hiệu có điều

kiện và các phát biểu if, case?

Câu hỏi thảo luận chính

Trang 5

VHDL statements (Phát biểu VHDL)

VHDL statements

5

Chương 2: Ngôn ngữ VHDL

Trang 6

Concurrent statements (Phát biểu đồng thời)

-> Việc thực thi không phụ thuộc vào vị trí xuất

hiện của chúng trong chương trình

Vị trí : Trực tiếp trong mô tả kiến trúc

Ứng dụng : Dùng mô tả cho mạch dạng cấu trúc hoặc dataflow

Cách gọi khác : phát biểu song song, dataflow

6

Chương 2: Ngôn ngữ VHDL

Trang 10

instant_name: COMPONENT component_name

GENERIC MAP( generics => generic values)

PORT MAP (inputs_and_outputs => signals);

Khai báo (Declaration):

Cài đặt (Installation):

10

Chương 2: Ngôn ngữ VHDL

Trang 12

DFF1: D_flipflop port map (D => Din, CLK => CLK, Q => Q1); DFF2: D_flipflop

port map (D => Q1, CLK => CLK, Q => Q2);

DFF3: D_flipflop port map (Q2, CLK, Dout);

end structure;

Dạng đầy đủ

Dạng rút gọn

Trang 13

count :out std_logic_vector(N-1 downto 0);

enable :in std_logic;

Trang 14

Khai báo component cho bộ đếm

count :out std_logic_vector(N-1 downto 0);

enable :in std_logic;

clk :in std_logic;

reset :in std_logic);

end component;

Trang 15

installation of 4-bit and 8-bit counters

generic map (4, x"000b", FALSE)

port map (cnt2, enable, clk, reset);

counter3: counter

generic map (8, x"001b", TRUE)

port map (cnt3, enable, clk, reset);

Cài đặt component cho các bộ đếm

Dạng đầy đủ

Dạng rút gọn

Trang 16

 Gán tín hiệu dùng When

 Gán tín hiệu dùng With … Select

CONCURENT SIGNAL ASSIGNMENT

_

Concurrent signal assignment: Gán tín hiệu đồng thời

Trang 17

target <= waveform1 when condition1 else

waveform2 when condition2 else

waveformN–1 when conditionN–1 else

waveformN when conditionN else

default_waveform;

Gán tín hiệu dùng When

Trang 18

WITH expression SELECT

target <= waveform1 WHEN choice_list1,

waveform2 WHEN choice_list2,

default_value WHEN OTHERS;

Gán tín hiệu dùng With … Select

Trang 19

din_0 :in std_logic;

din_1 :in std_logic;

sel :in std_logic;

dout :out std_logic);

with (sel) select

dout <= din_0 when '0',

din_1 when others;

end bhv;

library ieee;

use ieee.std_logic_1164.all;

- entity mux2 is

port ( din_0 :in std_logic;

din_1 :in std_logic;

sel :in std_logic;

dout :out std_logic);

end entity;

- architecture bhv of mux2 is begin

process(din_0, din_1,sel) begin

case sel is when '0' => dout <= d_in0;

when others => dout <= d_in1;

end case;

end process;

end bhv;

Trang 21

CO <= C(4);

Carry: for i in 1 to 4 generate C(i) <= (A(i-1) and B(i-1)) or (C(i-1) and (A(i-1) or B(i-1)));

end generate Carry;

Suma: FOR i IN 0 to 3 GENERATE SUM(i) <= A(i) xor B(i) xor C(i);

END GENERATE Suma;

end dataflow;

Sơ đồ mạch?

Trang 22

ifgen: IF i rem 2 = 0 GENERATE

O(i/2) <= A(i) and B(i);

END GENERATE ifgen;

END GENERATE msk;

end dataflow;

Sơ đồ mạch?

Trang 23

Mô tả máy trạng thái (FSM)

 Mô hình Moore vs Mealey

 1-process FSM

Moore machine

Mealy machine

Trang 24

Moore vs Mealey (FSM)

24

X = 0

Trang 25

State type declaration

declare the (state-machine) enumerated type

type FSM_States is (RST, CNT, LOAD, OUT);

declare signals of FSM_States type

signal current_state, next_state: FSM_States;

Khai báo kiểu:

Khai báo tín hiệu:

current_state, next_state chỉ nhận một trong

các giá trị trong tập hợp sau: RST, CNT, LOAD, OUT

Trang 26

1-Process FSM

process(clk, rst)

begin if(rst = ‘1’) then state <= s0;

next_state <= ;

Z <= ; end case;

end if;

end process;

Trang 27

2-Process Moore State Machine

process ( clk, rst) begin

if(rst = ‘1’) then State <= S0;

elsif (rising_edge(clk)) then case state is

when S0 =>

if(X =’1’) then next_state <= ; end if;

when S1 =>

if( X = ‘1’) then next_state <= ; end if;

end case;

end if;

end process;

process (state) begin

case state is when S0 => Z <= ; when S1 => Z <= ; end case;

end process;

Trang 28

2-Process Mealy FSM

process (clk, rst) begin

if(rst = ‘1’) then state <= S0;

elsif (rising_edge(clk)) then case state is

when S0 =>

if(X=’1’) then next state <= ;

end if;

when S1 =>

if( X = ‘1’) then next state <= ; end if;

end case;

end process;

process (state, X) begin

case state is when S0 =>

if(X=’1’) then

Z <= ; else

Z <= ; end if;

when S1 =>

if(X=’1’) then

Z <= ; else

Z <= ; end if;

end case;

end process;

X

Z

Trang 29

Ví dụ thiết kế FSM đơn giản

_

Trang 30

Example: 1-Process Mealy FSM

library IEEE;

use IEEE.std_logic_1164.all;

entity fsm is

port ( clk, reset, x1 : IN std_logic;

outp : OUT std_logic); end entity; architecture beh1 of fsm is

type state_type is (s1,s2,s3,s4);

signal state: state_type ; begin

process (clk, reset) begin

if (reset ='1') then

state <=s1; outp<='1';

elsif (clk='1' and clk'event) then

case state is

when s1 => if x1='1' then state <= s2;

else state <= s3;

end if;

outp <= '1';

when s2 => state <= s4; outp <= '1';

when s3 => state <= s4; outp <= '0';

when s4 => state <= s1; outp <= '0';

end case;

end if;

end process;

end beh1;

Trang 31

library IEEE;

use IEEE.std_logic_1164.all;

entity fsm is

port ( clk, reset, x1 : IN std_logic;

outp : OUT std_logic);

if (reset ='1') then state <=s1;

elsif (clk='1' and clk„event) then

2-Process FSM

case state is when s1 => if x1='1' then state <= s2;

end process process1;

process2 : process (state) begin

case state is when s1 => outp <= '1';

Trang 32

VHDL testbench (Chương trình mô phỏng/kiểm tra thiết kế VHDL)

DUT

Input

generate

Output Verification

DUT: Design Under Test

Trang 33

khai bao cac tin hieu vao ra cho DUT

signal A : std_logic_vector(3 downto 0) := "0101"; signal B : std_logic_vector(3 downto 0) := "1000"; signal CI : std_logic := '1';

output - signal SUM : std_logic_vector(3 downto 0);

signal CO : std_logic;

begin DUT: component adder4 port map (

A => A, B=> B, CI => CI, SUM => SUM, CO =>CO );

end test;

33

Trang 34

Mô hình kiểm tra tự động

Mô hình tham

chiếu

Kết quả kiểm tra

DUT: Design Under Test

Trang 35

Mô hình kiểm tra tự động: Ví dụ

architecture behavioral of adder4_etalon is

signal s_sig: std_logic_vector(4 downto 0);

signal a_sig: std_logic_vector(4 downto 0);

signal b_sig: std_logic_vector(4 downto 0);

s_sig <= a_sig + b_sig + CI;

end process plus;

SUM <= s_sig (3 downto 0);

CO <= s_sig (4);

Trang 36

Mô hình kiểm tra tự động: Ví dụ

architecture testbenchfull of adder4_testbench is

signal a_t : std_logic_vector(3 downto 0) := "0000";

signal b_t : std_logic_vector(3 downto 0) := "0000";

signal sum_t : std_logic_vector(3 downto 0);

signal sum_e : std_logic_vector(3 downto 0);

signal ci_t : std_logic := '0';

signal co_t : std_logic;

signal co_e : std_logic;

B : in std_logic_vector (3 downto 0);

CI : in std_logic;

SUM : out std_logic_vector (3 downto 0);

CO : out std_logic );

end component;

BEGIN create clock create_clock: process begin

variable test_cnt: integer := 0;

Trang 37

Mô hình kiểm tra tự động: Ví dụ

end if;

end process check;

component installation dut: adder4

port map (

A => a_t, B => b_t, CI => ci_t, SUM =>sum_t, CO => co_t);

etalon: adder4_etalon port map (A => a_t, B => b_t, CI => ci_t, SUM =>sum_e, CO => co_e);

END testbenchfull;

37

Trang 38

Trắc nghiệm

Câu 1: Cấu trúc lệnh FOR … GENERATE

thường dùng trong trường hợp nào

A Dùng cho các cấu trúc chương trình lặp đi lặp lại giống

nhau trong mô tả thiết kế

B Dùng cho các cấu trúc mô tả lặp lại giống nhau hoặc có

quy luật

C Dùng để mô tả cho vòng lặp cứng trong thiết kế

D Dùng mô tả các cấu trúc phần cứng có tính tùy biến về

số lượng các khối cài đặt

Trang 39

C Là một khối lệnh chứa là các lệnh tuần tự nhưng

được xem như một cấu trúc lệnh đồng thời

D Là một câu lệnh đồng thời sử dụng trong mô tả các

quá trình

Trang 40

Trắc nghiệm

Câu 3: Ưu điểm cơ bản của sử dụng câu lệnh gán tín hiệu đồng thời so với sử dụng cấu trúc tuần tự tương đương

A Mang lại kết quả thiết kế tối ưu hơn

B Mã chương trình đơn giản và ngắn gọn hơn

C Mô tả sát hơn cấu trúc của mạch và giảm thiểu khả năng

gây lỗi

D Giảm thiểu khả năng gây ra lỗi chức năng của mạch

Trang 41

C Là một biến phát sinh ra trong quá trình sử dụng khối thiết

kế như một khối con

D Sử dụng để quy định cho các đặc tính của các tham biến

động trong thiết kế

Trang 42

Trắc nghiệm

Câu 5: Phân biệt tác dụng của lệnh IF tuần tự và IF… GENERATE

A Lệnh IF tuần tự chỉ tác động lên các khối mô tả tuần tự còn lệnh IF

… GENERATE tác động lên khối lệnh song song

B Lệnh IF tuần tự chỉ tác động lên các tham biến động còn lệnh

IF … GENERATE tác động lên các tham biến tĩnh

C Lệnh IF tuần tự là câu lệnh rẽ nhánh có điều kiện phân cấp còn

IF… GENERATE là lệnh với một giá trị điều kiện

D Lệnh IF tuần tự làm thay đổi cấu trúc thiết kế hiện tại theo điều kiện

logic của tham biến cài đặt còn IF … GENERATE cài đặt/hoặc

không cài đặt theo điều kiện của tham biến tĩnh trong câu lệnh

Ngày đăng: 12/02/2020, 21:00

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w