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

Báo cáo cuối kỳ môn thực tập thiết kế hệ thống và vi mạch tích hợp thiết kế mạch ghép kênhmạch giải ghép kênh từ 4 sang 11 sang 4 với các yêu cầu sau

17 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Thiết kế mạch ghép kênh/mạch giải ghép kênh từ 4 sang 1/1 sang 4
Tác giả Ngô Minh Nhật
Người hướng dẫn Th.S Lê Minh Thành
Trường học Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh
Chuyên ngành Điện - Điện tử
Thể loại Báo cáo cuối kỳ
Năm xuất bản 2022
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 17
Dung lượng 259,41 KB

Nội dung

Thiết kế mạch ghép kênh/mạch giải ghép kênh từ 4 sang 1/1 sang 4 với các yêu cầu sau: - Có E\ tác động mức thấp, khi không tác động ngõ ra được đặt ở mức cao.. - Có 1 ngõ vào S được dùn

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH

KHOA ĐIỆN- ĐIỆN TỬ

-BÁO CÁO CUỐI KỲ MÔN: THỰC TẬP THIẾT KẾ HỆ THỐNG

VÀ VI MẠCH TÍCH HỢP

GVHD: Th.S Lê Minh Thành

Họ và tên: Ngô Minh Nhật MSSV: 20161346 Lớp: Thứ 7 - Tiết 1 – 5

THÀNH PHỐ HỒ CHÍ MINH – Tháng 12 năm 202

Trang 2

BÀI BÁO CÁO CUỐI KỲ

1 Thiết kế mạch ghép kênh/mạch giải ghép kênh từ 4 sang 1/1 sang 4 với các yêu cầu sau:

- Có E\ tác động mức thấp, khi không tác động ngõ ra được đặt ở mức cao

- Có 1 ngõ vào S được dùng để lựa chọn chế độ ghép kênh hoặc giải ghép kênh

Sơ đồ khối:

Hình 1.1: Sơ đồ khối của mạch ghép kênh/mạch giải ghép kênh từ 4 sang 1/1 sang 4

Trong đó:

In: ngõ vào của mạch

S2: ngõ vào lựa chọn kênh

S1: ngõ vào lựa chọn ghép kênh/giải ghép kênh

En: ngõ vào cho phép

y: ngõ ra của mạch

Trang 3

Sơ đồ RTL:

Hình 1.2: Sơ đồ RTL của mạch ghép kênh/mạch giải ghép kênh từ 4 sang 1/1 sang 4

Chương trình mô tả phần cứng bằng ngôn ngữ Verilog:

module Demux14(

input in,

input en,

input [1:0] s,

output [0:3] y);

assign y[0]=(en==0)?~(in&~s[1]&~s[0]):1;

assign y[1]=(en==0)?~(in&~s[1]&s[0]):1;

assign y[2]=(en==0)?~(in&s[1]&~s[0]):1;

assign y[3]=(en==0)?~(in&s[1]&s[0]):1;

endmodule

module Mux41(

input [3:0] in,

Trang 4

input en,

input [1:0] s,

output y);

assign y=(en==0)?~((in[0]&~s[1]&~s[0])+ (in[1]&~s[1]&s[0])+(in[2]&s[1]&~s[0])+

(in[3]&s[1]&s[0])):1;

endmodule

module Bai1_CuoiKy(

input [0:4] in,

input en,

input s1,

input [1:0] s2,

output [4:0] y);

wire [4:0] tam;

wire [4:0] c;

assign tam=(s1==0)?16:15;

and(c[4],in[4],tam[4]);

and(c[3],in[3],tam[3]);

and(c[2],in[2],tam[2]);

and(c[1],in[1],tam[1]);

and(c[0],in[0],tam[0]);

Demux14 A (c[4], en, s2[1:0], y[3:0]);

Mux41 B (c[3:0], en, s2[1:0], y[4]);

endmodule

Test bench:

module Test_Bai1;

reg [0:4] in;

Trang 5

reg en;

reg s1;

reg [1:0] s2;

wire [4:0] y;

Bai1_CuoiKy uut (

.in(in), .en(en), .s1(s1), .s2(s2), .y(y));

initial begin

in = 0;

en = 0;

#10;

en = 1;

#50;

en = 0;

#10;

s1 = 0; s2 = 0; #100; s1 = 0; s2 = 1; #100; s1 = 0; s2 = 2; #100; s1 = 0; s2 = 3; #100; s1 = 1; s2 = 0; #100; s1 = 1; s2 = 1; #100; s1 = 1; s2 = 2; #100; s1 = 1; s2 = 3; #100;

$stop;

Trang 6

always

begin

in[4]=~in[4];#10; end

always

begin

in[3]=~in[3];#20; end

always

begin

in[2]=~in[2];#30; end

always

begin

in[1]=~in[1];#40; end

always

begin

in[0]=~in[0];#50; end

endmodule

Trang 7

Hình 1.3: Kết quả mô phỏng mạch ghép kênh/mạch giải ghép kênh từ 4 sang 1/1 sang 4

Nhận xét:

Từ 10ms đến 60ms: en = 1 nên ngõ ra được đặt ở mức cao

Từ 60ms trở đi: ngõ vào cho phép en = 0 nên mạch bắt đầu hoạt động

Từ 70ms đến 470ms:

+ Ngõ vào s1 = 0 nên mạch hoạt động ở chế độ giải ghép kênh

+ Ngõ vào chọn kênh s2 lần lượt có các giá trị là 00, 01, 10, 11 tương ứng với các ngõ ra y[3], y[2], y[1], y[0]

+ Ngõ ra của mạch giải ghép kênh có giá trị giống với giá trị của ngõ vào tại thời điểm giải ghép

Từ 470ms đến 870ms:

+ Ngõ vào s1 = 1 nên mạch hoạt động ở chế độ ghép kênh

+ Ngõ vào chọn kênh s2 lần lượt có các giá trị là 00, 01, 10, 11 tương ứng với các ngõ ra y[3], y[2], y[1], y[0]

+ Ngõ ra của mạch ghép kênh sẽ có giá trị giống với giá trị của kênh được chọn tại thời điểm ghép kênh

Vậy mạch hoạt động đúng với yêu cầu của đề bài

2 Thiết kế mạch quang báo 8 led rời L0-L7 với các yêu cầu sau:

- Mode 1: các led chớp tắt như sau: L0-L3 sáng thì L4-L7 tắt

- Mode 2: 4 led L0-L3 đếm lên (L0 đại diện cho bit có trọng số thấp), các led L4 cho đến L7

Trang 8

cũng đếm lên (L7 đại điện cho bit có trọng số thấp)

- Mode 3: 5 led L0-L4 sáng dần lên và tắt, 3 led L5-L7 hiển thị số lần sáng dần rồi tắt của nhóm

L0-L4

- Mode 4: 8 led tắt dần

- Xung clk có 2 tần số, 4 Hz và 10 Hz, được chia xung từ xung clock nội 4 MHz

- Nút nhấn EAST được dùng để reset

Sơ đồ RTL:

Hình 2.1: Sơ đồ RTL của mạch quang báo 8 led rời L0-L7

Chương trình mô tả phần cứng bằng ngôn ngữ Verilog:

module Mux21(

input wire [1:0] clk,

input wire sw0,

output reg clk_o);

always @(clk,sw0)

case (sw0)

Trang 9

0: clk_o = clk[0];

1: clk_o = clk[1];

endcase

endmodule

module Div

#(parameter N= 22, M = 4000000)

( input wire clk, reset,

output wire [1:0]q);

reg [N-1:0] r_reg4H, r_reg10H;

wire [N-1:0] r_next4H,r_next10H;

always @(posedge clk, posedge reset)

begin

if (reset)

begin

r_reg4H<= 0;

r_reg10H<= 0;

end

else

begin

r_reg4H<=r_next4H;

r_reg10H<=r_next10H;

end

end

assign r_next4H = (r_reg4H==M/4)?0:r_reg4H + 1;

assign r_next10H = (r_reg10H==M/10)?0:r_reg10H + 1; assign q[0]=(r_reg4H<M/8)?0:1;

assign q[1]=(r_reg10H<M/20)?0:1;

Trang 10

module MODE1(

input wire clk,reset,

output reg [7:0] q);

reg [3:0] tam2, tam3;

initial begin tam2=0; tam3=0; end always @(posedge clk, posedge reset)

if(reset)

q=8'b0000000;

else

begin

tam2=~tam2;

tam3=~tam2;

q={tam3,tam2};

end

endmodule

module MODE2(

input clk,reset,

output reg [7:0] led);

reg [3:0] tam;

initial tam = 0;

always @( posedge clk)

begin

if ( reset == 1)

led =0;

else

tam = tam+1;

Trang 11

led = {tam[0],tam[1],tam[2],tam[3],tam};

end

endmodule

module MODE3(

input wire clk,reset,

output reg [7:0] led);

reg [5:0] tam1;

reg [2:0] tt,a;

initial begin tam1=0; tt=0; a=0; end

always @(posedge clk, posedge reset)

begin

if(reset) begin tam1=0;

a=0;

end else begin tam1=(tam1[5]==0)?{tam1[4:0],~tam1[5]}:0; tt=tt+1;

if(tt==7)

begin a=a+1;

tt=0;

end else a=a;

Trang 12

led[7:5] = a;

led[4:0] = tam1;

end end

endmodule

module MODE4(

input wire clk,reset,

output wire [7:0] s_out );

reg [7:0] r_reg;

wire [7:0] r_next;

always @(posedge clk,posedge reset)

if(reset)

r_reg<=8'b11111111;

else

r_reg<=r_next;

{~r_reg[0],r_reg[7:1]};

assign s_out= r_reg;

endmodule

module Bai2_CuoiKy(

input clk, reset,sw0,

input [3:0] sw,

output reg [7:0] led );

wire [7:0] c,d,e,f;

Mux21 B (q, sw0, clko);

Div A (clk, reset, q);

MODE1 C (clko, reset, c );

Trang 13

MODE2 D (clko, reset, d);

MODE3 E (clko, reset, e);

MODE4 F (clko, reset, f);

always @(posedge clk)

led=(sw==00)?c:(sw==01)?d:(sw==10)?e:f; endmodule

Test bench:

module Test_Bai2;

reg clk;

reg reset;

reg sw0;

reg [3:0] sw;

wire [7:0] led;

Bai2_CuoiKy uut (

.clk(clk), .reset(reset), .sw0(sw0), .sw(sw), .led(led));

initial begin

clk = 0;

reset = 0;

sw0 = 0;

sw = 0;

#100;

reset = 1; #10;

reset = 0; #10;

Trang 14

sw = 3; #100;

end always begin

#125; clk=~clk;

end endmodule

3 Thiết kế máy trạng thái có sơ đồ trạng thái sau:

Trang 15

Sơ đồ khối:

Hình 3.1: Sơ đồ khối của máy trạng thái

Sơ đồ RTL:

Hình 3.2: Sơ đồ RTL của máy trạng thái

Chương trình mô tả phần cứng bằng ngôn ngữ Verilog: module Bai3_CuoiKy(clk, reset, w,z); input clk, reset, w;

output reg z;

Trang 16

reg[2:1] y,Y;

parameter [2:1] S0 = 2'b00, S1 = 2'b01, S2 = 2'b10; always@(w,y)

case (y)

S0: if(w) begin Y=S2; z=1'b1;end

S1: if(w) begin Y=S1; z=1'b1;end

S2: if(w) begin Y=S1; z=1'b1;end

default: Y=S0;

endcase

always @(negedge reset, posedge clk)

if (reset == 0) y = S0;

else y = Y;

endmodule

Test bench:

module Test_Bai3;

reg clk;

reg reset;

reg w;

wire z;

Bai3_CuoiKy uut (

.clk(clk), .reset(reset), .w(w),

initial begin

clk = 0;

reset = 0;

w = 0;

#100;

Trang 17

clk = 0;

reset = 1;

w = 0;

#100;

clk = 0;

reset = 1;

w = 1;

#100;

end

always

begin

#10;

clk=~clk;

end

endmodule

Hình 3.3: Kết quả mô phỏng của máy trạng thái

Ngày đăng: 21/11/2024, 20:27

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

TÀI LIỆU LIÊN QUAN

w