1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo môn thiết kế logic số19

18 12 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 18
Dung lượng 1,21 MB

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 1: Viết chương trình điều khiển 8 led sáng lan từ 2 bên vào giữa.Chương trình VHDL mô tả hệ thống: logic đa mức entity main is --Là thực thể tạo danh sách mô tả các chân vào/ra Port

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

*****

BÁO CÁO MÔN HỌC :

THIẾT KẾ LOGIC SỐ - NHÓM 02

NHÓM BÀI TẬP LỚN : 18 GIẢNG VIÊN : TRẦN THÚY HÀ CÁC THÀNH VIÊN TRONG NHÓM :

TRẦN ĐÌNH KHIÊM-B18DCDT114 TRẦN QUANG LINH-B18DCDT125 NGUYỄN GIA LONG-B18DCDT130

Hà Nội, ngày 27 tháng 11 năm 2021

Trang 2

Bài 1: Viết chương trình điều khiển 8 led sáng lan từ 2 bên vào giữa.

Chương trình VHDL mô tả hệ thống:

logic đa mức

entity main is Là thực thể tạo danh sách mô tả các chân vào/ra

Port ( clk : in STD_LOGIC; Xung clock mô tả tín hiệu vào

rst : in STD_LOGIC; Hệ thống đóng ngắt

cout : out STD_LOGIC_VECTOR (7 downto 0)); Đầu ra 8bit của hệ thống

architecture Behavioral of main is cấu trúc mô tả mạch

type state is (zero, one, two, three, four); Các trạng thái biểu diễn

signal pr_state, nx_state : state; Hai trạng thái hiện tại và kế tiếp có

begin

process(clk, rst) Tuần tự của clk và rst

begin

if(rst = '1') then Khi rst = ‘1’ trạng thái ở mức thấp(trạng thái zero)

pr_state <= zero;

elsif clk'event and clk = '1' then Khi rst = ‘0’, xung clock lên 1 thì trạng thái

tiếp

end if;

Trang 3

end process;

process(pr_state) Tuần tự của trạng thái hiện tại

begin

case pr_state is Các trường hơp của led

when zero =>cout <="00000000"; Ở trạng thái zero đầu ra là

‘00000000’

“one”

when one =>cout <="10000001"; Ở trạng thái one đầu ra là

‘10000001’

“two”

when two =>cout <= "11000011"; (Tương tự như trên…)

nx_state <= three;

when three =>cout <="11100111";

nx_state <= four;

when four =>cout <="11111111";

nx_state <= zero; Về trạng thái đầu lặp lại vòng lặp end case;

end process;

Chương trình mô tả mạch led Kathode chung bít 1 led sáng

*Kết quả mô phỏng:

Trang 4

*Sơ đồ khối:

Trang 5

Bài 2 : Viết chương trình mô tả mạch phát hiện chuỗi bit nhị phân liên tiếp, đầu ra của nó là 1 khi xuất hiện 4 hoặc xuất hiện nhiều hơn 4 bit 1 liên tục và đầu ra là 0 trong các trường hợp còn lại

d = 1 d=1

d=0

d=0

d=0

d=0

d=1 d=1 d=1

Có 4 trạng thái là s0,s1,s2,s3,s4

S0 nếu thêm bit 1 thì sẽ sang trạng thái s1, còn nếu là bit 0 thì vẫn ở trạng thái s0 (s1= ‘1’)

S1 nếu thêm bit 1 thì sang trạng thái s2, còn nếu là bit 0 thì quay về trạng thái s0 (s2 = ‘11’)

S2 nếu thêm bit 1 thì sang trạng thái s3, còn nếu là bit 0 thì quay về trạng thái s0 (s3 = ‘111’)

S3 nếu thêm bit 1 thì sang trạng thái s4, còn nếu là bit 0 thì quay về trạng thái s0 (s4 = ‘1111’)

S4 nếu thêm bit 0 thì sẽ về trạng thái s0,bit 1 thì sẽ ở lại s4

S0

S1

S2

S3 S4

Trang 6

* Code VHDL :

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

Uncomment the following library declaration if using arithmetic functions with Signed or Unsigned values use IEEE.NUMERIC_STD.ALL;

Uncomment the following library declaration if instantiating any Xilinx leaf cells in this code.

library UNISIM;

use UNISIM.VComponents.all;

entity main is Port ( clock : in STD_LOGIC;

reset : in STD_LOGIC;

d : in STD_LOGIC;

Z : out STD_LOGIC);

end main;

architecture Behavioral of main is type state is (s0,s1,s2,s3,s4); khai bao cac trang thái signal pr_state,nx_state : state;

begin process(clock,reset) begin

if reset='1' then

pr_state <= s0; nếu reset =1 thì quay về trạng thái s0 elsif clock'event and clock='1' then

pr_state <= nx_state; nếu clock thay đổi thì trạng thái sang trạng thái tiếp theo end if;

end process;

process(d,pr_state) begin

case pr_state is when s0 =>

Z <= '0';

if d = '1' then nx_state <= s1; nếu thêm bit 1 thì trạng thái sang trạng thái s1 else nx_state <= s0; còn không thì về s0

end if;

when s1 =>

Z <='0';

if d = '1' then nx_state <= s2;

else nx_state <= s0;

end if;

when s2 =>

Z <='0';

if d = '1' then nx_state <= s3;

else nx_state <= s0;

end if;

when s3 =>

Z <= '0';

if d ='1' then nx_state <= s4;

else nx_state <= s0;

end if;

Trang 7

end if;

when s4 =>

Z <= '1'; khi có 4 bit liên tiếp thì Z=1

if d = '0' then nx_state <= s0; nếu d=’1’ thì quay về trạng thái s0 else nx_state <= s4; còn không thì nó tiếp tục ở trạng thái s4 end if;

end case;

end process;

end Behavioral;

Trang 8

* Thiết lập các giá trị :

Value radix: binary, Leading value : 0, Trailing value :1

Start time 0s, Cancel time :30s

Trang 9

* Kết quả :

* Schematic :

Trang 10

Câu 3 Viết chương trình mô tả mạch tuần tự đồng bộ để kiểm tra tính chẵn lẻ của

một dãy dữ liệu nhị phân liên tục được đưa đến đầu vào Nếu số bit 1 nhận

được là lẻ thì mạch sẽ đưa ra tín hiệu ra là Z=1, chẵn bit 1 thì mạch đưa ra

tín hiệu ra Z=0 Nếu hai bit 0 liên tiếp ở đầu vào thì mạch sẽ quay trở lại

trạng thái ban đầu và lại bắt đầu kiểm tra dãy dữ liệu mới

Bài làm

*Đồ hình trạng thái:

*Chương trình VHDL mô tả hệ thống:

library IEEE; Khai báo thư viện IEEE

logic đa mức

entity main is Là thực thể tạo danh sách mô tả các chân vào/ra

Port ( d : in STD_LOGIC; Tín hiệu vào

clk : in STD_LOGIC; Xung clock mô tả tín hiệu vào

rst : in STD_LOGIC; Hệ thống đóng ngắt

q : out STD_LOGIC); Đầu ra của hệ thống

Trang 11

end main;

architecture Behavioral of main is Cấu trúc mô tả mạch

type state is(zero, one, two, reset); Các trạng thái biểu diễn

signal pr_state, nx_state : state; Hai trạng thái hiện tại và kế tiếp có tác

dụng chuyển trạng thái

begin

process(clk,rst) Tuần tự của clk và rst

begin

if rst ='1' then

pr_state <= reset; Khi rst = ‘1’ trạng thái ở mức thấp(trạng thái zero)

elsif clk'event and clk = '1' then Khi rst = ‘0’ hệ thống chuyển trạng thái,

thành

pr_state <= nx_state; trạng thái kế tiếp

end if;

end process;

process(d, pr_state) Tuần tự của trạng thái hiện tại

begin

when reset => q <= '0'; Ở trạng thái reset đầu ra q mức 0

q <= '1';

Trang 12

q <= '0'; đầu ra vẫn là 0

nx_state <= zero;

end if;

if d = '1' then Nếu d =1 thì là 2 bit 1 chẵn

nx_state <= zero; Quay về trạng thái zero

nx_state <= two; Chuyển sang trạng thái two(10)

end if;

when two => Khi ở trạng thái two

if d = '1' then d= 1 là chẵn bit 1(tức 101)

q <= ‘0’; Nên đầu ra q =0

nx_state <= zero; Quay về trạng thái zero

else d = 0 là lẻ bit 1(tức 100)

nx_state <= zero; Do có hai bit 0 liên tiếp nên về trạng thái zero

end if;

end case;

end process;

end Behavioral; Kết thúc trương trình

*Kết quả: Ta setup như sau

Trang 13

d 6s 50s

Ta có thể quan sát ở giây thứ 3, d = 1 lẻ bit 1 nên q =1, giây tiếp theo d =1 chẵn bit

1 nên q =0 về trạng thái zero, giây tiếp theo d =1 lẻ bit 1 nên q =1 Giây tiêp theo d

= 0 lẻ bit 1 q=1 là trạng thái two Giây tiếp theo d =0 vẫn lẻ bit 1 nên q = 1 nhưng

do có 2 bit 0 liên tiếp nên quay về trạng thái zero Ở trạng thái zero thêm d =0 nên

q = 0

Tín hiệu vào như sau: 000111000…

Q: 000101110…

*Sơ đồ khối:

Trang 15

Bài 4 : Lập trình VHDL MUX 8:1 từ MUX 2:1

MUX 2 :1 có 2 đầu vào và 1 đầu lựa chọn

I0 F I1

S

Như vậy, để có thể tạo khối Mux 8:1 thì cần phải có 7 khối 2:1 Công thức của khối Mux 2:1 : 1*S

Ta có sơ đồ :

MUX 2:1

Trang 16

* Code VHDL :

- Chương trình chạy mux 2:1 :

- Chương trình chạy mux 8:1 :

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity main is

Port ( j0 : in STD_LOGIC;

j1 : in STD_LOGIC;

e : in STD_LOGIC;

f : out STD_LOGIC);

end main;

architecture Behavioral of main is

begin

f<=((not e) and j0) or (e and j1);

end Behavioral;

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity mux81 is

Port ( i0,i1,i2,i3,i4,i5,i6,i7 : in STD_LOGIC;

s0,s1,s2 : in STD_LOGIC;

fout : out STD_LOGIC);

end mux81;

architecture Behavioral of mux81 is

component main is khai bao component de g?i ch??ng trình main

Trang 17

* Thiết lập các giá trị đầu vào :

Value radix: binary, Leading value : 0, Trailing value :1

Start time 0s, Cancel time :30s

* Kết quả :

Port ( j0 : in STD_LOGIC;

j1 : in STD_LOGIC;

e : in STD_LOGIC;

f : out STD_LOGIC);

end component;

signal t1,t2,t3,t4,t5,t6 : std_logic; khai báo tín hi?u trong - k?t n?i các component

begin

m1: main port map(j0 => i0, j1=>i1,e=>s0,f=>t1); s? d?ng câu l?nh port map k?t n?i component m2: main port map(j0 => i2, j1=>i3,e=>s0,f=>t2);

m3: main port map(j0 => i4, j1=>i5,e=>s0,f=>t3);

m4: main port map(j0 => i6, j1=>i7,e=>s0,f=>t4);

m5: main port map(j0 => t1, j1=>t2,e=>s1,f=>t5);

m6: main port map(j0 => t3, j1=>t4,e=>s1,f=>t6);

m7: main port map(j0 => t5, j1=>t6,e=>s2,f=>fout);

end Behavioral;

Trang 18

* Schematic :

Ngày đăng: 11/10/2022, 16:38

HÌNH ẢNH LIÊN QUAN

*Đồ hình trạng thái: - Báo cáo môn thiết kế logic số19
h ình trạng thái: (Trang 10)
w