1. Trang chủ
  2. » Giáo án - Bài giảng

de thi mon dien tu so ngon ngu phan cung vhdl truong dai hoc dien luc co dap an

25 209 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 25
Dung lượng 337,21 KB

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

Nội dung

Câu 1 2,5 điểm: cho đoạn chương trình viết bằng VHDL sau:a, Tìm lỗi và sửa lỗi bằng cách viết lại chương trình  Các lỗi được làm nổi bật thành màu vàng library IEEE; use IEEE.STD_LOGIC_

Trang 1

Câu 1 (2,5 điểm): cho đoạn chương trình viết bằng VHDL sau:

a, Tìm lỗi và sửa lỗi bằng cách viết lại chương trình

Các lỗi được làm nổi bật thành màu vàng

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity RSFF is

port ( R;S;RST;CLK : in STD_LOGIC; Dùng dấu phẩy để ngăn cách khai

báo các chân vào/ra chứ không dùng chấm phẩy

Q : out STD_LOGIC; Khai báo các chân vào/ra cuối cùng của

entity không dùng chấm phẩy ở đây (thừa dấu chấm phẩy)

) Thiếu dấu chấm phẩy ở đây

process (CLK,RST,R,S); Thừa dấu chấm phẩy ở đây

variable RS:std_logic_vector (1 downto 0);

begin

RS<=R&S; Lệnh gán biến dùng “:=” chứ không dùng “<=”

if (RST=="1") then Thừa một dấu bằng, nháy đơn chứ không dùng nháy kép

q0<='0';

else if (CLK'event and CLK='1') then

case RS is

1

Trang 2

when "00"=>q0=>q0; Dùng lệnh gán biến “<=” chứ không dùng

Trang 3

begin

process (CLK,RST,R,S)

variable RS:std_logic_vector (1 downto 0);

begin

RS:=R&S;

if (RST=’1’) then

q0<='0';

else if (CLK'event and CLK='1') then

case RS is

when "00"=>q0<=q0;

when "01"=>q0<='1';

when "10"=>q0<='0';

when others=>q0<='X';

end case;

end if; end if;

end process;

Q<=q0;

end RSFF;

b, Đoạn mã đúng này mô tả phần tử số là Flip-Flop RS không đồng bộ (bất đồng bộ) tín hiệu Reset, mô hình phần tử số đó là:

3

Trang 4

Hình 1: Mô hình RSFF và bảng sự thật Câu 2 (2,5 điểm): Viết mã VHDL mô tả mạch như hình bên dưới:

Hình 2: Mạch logic số

4

Trang 7

port ( x,y: in std_logic;

Trang 8

port ( x,y: in std_logic;

- Chuong trinh

chinh -library ieee; khai báo thư viện

use ieee.std_logic_1164.all;

entity bai_2 is

port ( x1,x2,CLK,RST: in std_logic; Khai báo các chân vào

z: out std_logic Khai báo các chân ra

Trang 9

component inverter Khai báo khối component cổng NOT cấp thấp

component OR_2 Khai báo khối component cổng OR_2 cấp thấp

port( x,y: in std_logic;

z: out std_logic

);

end component;

-cong

component NOR_2 Khai báo khối component cổng NOR_2 cấp thấp

port( x,y: in std_logic;

z: out std_logic

);

end component;

-cong

AND_2 -component AND_2 Khai báo khối component cổng AND_2 cấp thấp

port( x,y: in std_logic;

z: out std_logic

);

end component;

Trang 10

signal S1,S2,S3,S4,S5,S6,S7,S8: std_logic; Khai báo các tín hiệu để lưu trữ tạm thời các giá trị trung gian (xem hình bên dưới)

- Z = 1 nếu như gặp dãy số vào là 0100

- Z = 0 trong mọi trường hợp khác

Phân tích bài toán ( Phần này không viết vào bài thi, chỉ để đọc hiểu vận dụng để làm những bài khác):

Trang 11

- Theo bài ra thì đây là thiết kế máy trạng thái hữu hạn FSM, ở đây đầu ra Z chỉ phụ

thuộc vào trạng thái hiện tại nên là FSM kiểu MOORE.

- Theo bài ra ta xây dựng được bảng trạng thái ngõ ra theo ngõ vào:

Trạng thái hiện tại

Trang 12

Phần bài làm (viết vào bài thi):

- Vẽ sơ đồ chuyển trạng thái:

- Sơ đồ khối mạch:

phat hien chuoi "0100" FSM VHDL

- by Khanh Hung, 08/06/2014 -Khai bao thu vien -library ieee;

use ieee.std_logic_1164.all;

-Khai bao thuc entity FSM is

Trang 13

port (

X :in std_logic; Input X

CLK :in std_logic; Input clock

RST :in std_logic; Input reset

Z :out std_logic Output );

-Phan mach to hop ben

duoi -process(X,pr_state) Danh sách cảm nhận là trạng thái hiện tại và đầu vào Xbegin

case pr_state is Với trạng thái hiện tại là:

when S0 => Khi trạng thái hiện tại là S0

Z <= '0'; Đầu ra Z=0if(X='0') then nx_state <= S1; Nếu đầu vào X=0 thì trạngthái tiếp theo là S1

else nx_state <= S0; Nếu đầu vào X=1 thì trạng thái tiếp theo là S0

end if;

when S1 => Khi trạng thái hiện tại là S1

Z <= '0'; Đầu ra Z=0if(X='1') then nx_state <= S2; Nếu đầu vào X=1 thì trạngthái tiếp theo là S2

else nx_state <= S1; Nếu đầu vào X=0 thì trạng thái tiếp theo là S1

Trang 14

end if;

when S2 => Khi trạng thái hiện tại là S2

Z <= '0'; Đầu ra Z=0if(X='0') then nx_state <= S3; Nếu đầu vào X=0 thì trạngthái tiếp theo là S3

else nx_state <= S0; Nếu đầu vào X=1 thì trạng thái tiếp theo là S0

end if;

when S3 => Khi trạng thái hiện tại là S3

Z <= '0'; Đầu ra Z=0if(X='0') then nx_state <= S4; Nếu đầu vào X=0 thì trạngthái tiếp theo là S4

else nx_state <= S2; Nếu đầu vào X=1 thì trạng thái tiếp theo là S2

end if;

when S4 => Khi trạng thái hiện tại là S4

Z <= '1'; Đầu ra Z=1if(X='0') then nx_state <= S1; Nếu đầu vào X=0 thì trạng thái tiếp theo là S1

else nx_state <= S2; Nếu đầu vào X=1 thì trạng thái tiếp theo là S2

Trang 20

Cong_not: inverter port map(x1,S1);

Cong_OR : OR_2 port map(x2,S8,S2);

JKFF_1 : JKFF port map(S1,S2,CLK,RST,S3,S4);Cong_NOR: NOR_2 port map(S1,S3,S5);

Trang 21

port ( x1,x2,CLK,RST: in std_logic; Khai báo các chân vào

z: out std_logic Khai báo các chân ra

component OR_2 is Khai báo khối component cổng OR_2 cấp thấp

port( x,y: in std_logic;

Trang 22

z: out std_logic

);

end component;

-cong

component NOR_2 is Khai báo khối component cổng NOR_2 cấp thấp

port( x,y: in std_logic;

z: out std_logic

);

end component;

-cong

AND_2 -component AND_2 is Khai báo khối AND_2 -component cổng AND_2 cấp thấp

port( x,y: in std_logic;

Trang 23

-Khai bao thu

X :in std_logic; Input X

CLK :in std_logic; Input clock

RST :in std_logic; Input reset

Z :out std_logic Output );

Trang 24

-Phan mach to hop ben

duoi -process(X,pr_state) Danh sách cảm nhận là trạng thái hiện tại và đầu vào Xbegin

case pr_state is Với trạng thái hiện tại là:

when S0 => Khi trạng thái hiện tại là S0

Z <= '0'; Đầu ra Z=0if(X='0') then nx_state <= S1; Nếu đầu vào X=0 thì trạngthái tiếp theo là S1

else nx_state <= S0; Nếu đầu vào X=1 thì trạng thái tiếp theo là S0

end if;

when S1 => Khi trạng thái hiện tại là S1

Z <= '0'; Đầu ra Z=0if(X='1') then nx_state <= S2; Nếu đầu vào X=1 thì trạngthái tiếp theo là S2

else nx_state <= S1; Nếu đầu vào X=0 thì trạng thái tiếp theo là S1

end if;

when S2 => Khi trạng thái hiện tại là S2

Z <= '0'; Đầu ra Z=0if(X='0') then nx_state <= S3; Nếu đầu vào X=0 thì trạngthái tiếp theo là S3

else nx_state <= S0; Nếu đầu vào X=1 thì trạng thái tiếp theo là S0

end if;

when S3 => Khi trạng thái hiện tại là S3

Z <= '0'; Đầu ra Z=0if(X='0') then nx_state <= S4; Nếu đầu vào X=0 thì trạngthái tiếp theo là S4

else nx_state <= S2; Nếu đầu vào X=1 thì trạng thái tiếp theo là S2

Trang 25

end if;

when S4 => Khi trạng thái hiện tại là S4

Z <= '1'; Đầu ra Z=1if(X='0') then nx_state <= S1; Nếu đầu vào X=0 thì trạng thái tiếp theo là S1

else nx_state <= S2; Nếu đầu vào X=1 thì trạng thái tiếp theo là S2

end if;

end case;

end process;

end FSM;

Ngày đăng: 17/10/2016, 22:34

HÌNH ẢNH LIÊN QUAN

Hình 2: Mạch logic số - de thi mon dien tu so ngon ngu phan cung vhdl truong dai hoc dien luc co dap an
Hình 2 Mạch logic số (Trang 4)
Hình 1: Mô hình RSFF và bảng sự thật Câu 2 (2,5 điểm): Viết mã VHDL mô tả mạch như hình bên dưới: - de thi mon dien tu so ngon ngu phan cung vhdl truong dai hoc dien luc co dap an
Hình 1 Mô hình RSFF và bảng sự thật Câu 2 (2,5 điểm): Viết mã VHDL mô tả mạch như hình bên dưới: (Trang 4)

TỪ KHÓA LIÊN QUAN

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

w