Professional Documents
Culture Documents
Bai9 - Mach Chuyen Song Song Sang Noi Tiep, Noi Tiep Sang Song Song
Bai9 - Mach Chuyen Song Song Sang Noi Tiep, Noi Tiep Sang Song Song
A. MỤC TIÊU:
Sau khi học xong bài này sinh viên biết:
▪ 1) Phân tích nguyên tắc hoạt động của mạch chuyển song song sang nối tiếp, nối
tiếp sang song song.
▪ 2) Viết được RTL code miêu tả hoạt động của mạch chuyển song song sang nối tiếp,
nối tiếp sang song song.
▪ 3) Xây dựng testbench kiểm tra thiết kế cho mạch chuyển song song sang nối
tiếp, nối tiếp sang song song.
B. NỘI DUNG.
1. Mạch chuyển song song sang nối tiếp.
1.1 Chức năng của mạch chuyển song song sang nối tiếp.
Trong máy tính thường xử lý và lưu dữ liệu với định dạng song song như byte,
word… Nhưng khi dữ liệu được truyền đi một khoảng cách dài thì việc truyền song
song không còn thích hợp vì tốn nhiều đường dây, tín hiệu hay bị nhiễu, …Vì vậy, dữ
liệu từ truyền song song sẽ chuyển thành truyền nối tiếp.
1.2 Sơ đồ các tín hiệu giao tiếp của mạch chuyển đổi dữ liệu song song sang
nối tiếp.
Hình 9.1 – Tín hiệu giao tiếp mạch chuyển đổi dữ liệu song song sang nối tiếp.
1
Các tín hiệu giao tiếp gồm có:
▪ clk: xung clock hệ thống.
▪ rst_n: tín hiệu reset bất đồng bộ tích cực mức thấp.
▪ load: tín hiệu cho phép ghi dữ liệu data_in lên thanh ghi. Tín hiệu load chỉ tích
cực một chu kỳ xung clock tương ứng với một lần ghi. Khi có tín hiệu load thì
khi đó ngõ vào data_in có tín hiệu mới cần cấp phát đi. Khi load = 1’b1 thì
data_in [7:0] sẽ được lưu lại bên trong khối parallel_to_serial, và dữ liệu sẽ được
phát đi theo thứ tự từ bit 0 đến bit 7 mỗi khi có cạnh lên xung clk.
▪ data_in [7:0]: bus dữ liệu truyền đến.
▪ sdo: là tín hiệu ngõ ra nối tiếp.
▪ tx_en: tín hiệu cho phép truyền đi. Khi tx_en = 1’b1 thì dữ liệu data_in [7:0] được
dịch sang phải 1bit theo từng chu kỳ xung clk. Ngõ ra của tín hiệu này sử dụng
để quan sát hoạt động của mạch khi viết testbech mô phỏng.
▪ Counter [2:0]: ngõ ra giá trị của bộ đếm, tín hiệu này dùng cho testbench, để
quan sát sự hoạt động của mạch.
Hình 9.2 Sơ đồ khối mạch chuyển đổi song song sang nối tiếp
Khi có tín hiệu load thì tín hiệu tx_en bật lên để cho phép thanh ghi đếm hoạt
động. Khi đếm đến 7 sẽ quay về 0 và tx_en sẽ xuống 0, thanh ghi đếm không hoạt
động nữa. Khi có tín hiệu load thì giá trị tại ngõ vào data_in[7:0] được lưu vào thanh
2
ghi shift_reg[7:0]. Tín hiệu tx_en = 1’b1 cho phép thanh ghi shift_reg[7:0] dịch chuyển dữ
liệu để đưa ra ngoài theo từng xung clk. Ngõ ra sdo là bit shift_reg[0].
Hình 9.3 Sơ đồ nguyên lý mạch chuyển đổi song song sang nối tiếp.
3
output [7:0] shift_reg;
reg [7:0] shift_reg;
reg tx_en;
reg [2:0] counter;
..............................................................................................
endmodule
Hình 9.4 Sơ đồ khối kiểm tra mạch chuyển đổi song song sang nối tiếp.
4
reg clk_tb;
reg rst_n_tb;
reg load_tb;
reg [7:0] data_in_tb;
wire sdo_tb;
wire tx_en_tb;
wire [2:0]counter_tb;
wire [7:0]shift_reg_tb;
Hình 9.5 Dạng sóng testbench để kiểm tra hoạt động của mạch chuyển đổi song song
sang nối tiếp.
5
Tại đầu thu một số thiết bị cần phải chuyển đổi dữ liệu từ nối tiếp sang song
song vì các dữ liệu trong máy tính thường là dữ liệu song song. Ví dụ trong thiết kế
UART ta sử dụng mạch chuyển dữ liệu từ nối tiếp sang song song để máy tính thao
tác được trên dữ liệu này.
2.2 Sơ đồ các tín hiệu giao tiếp của mạch chuyển đổi dữ liệu nối tiếp sang
song song.
Hình 9.6 – Tín hiệu giao tiếp mạch chuyển đổi dữ liệu nối tiếp sang song song.
Hình 9.7 Sơ đồ khối mạch chuyển đổi dữ liệu nối tiếp sang song song.
Khi có tín hiệu start = 1’b1 thì tín hiệu rx_en bật lên để cho phép thanh ghi
counter hoạt động. Khi đếm đến 7 sẽ quay về 0 và rx_en sẽ xuống 0 và tín hiệu finish =
1’b1 để chỉ ra đã nhận xong 8 bit.
Hình 9.8 Sơ đồ nguyên lý mạch chuyển đổi nối tiếp sang song song.
7
2. 4 Mô tả RTL code.
- Viết RTL code miêu tả mạch chuyển đổi song song sang nối tiếp, biên dịch, gỡ
lỗi và tổng hợp trên phần mềm mô phỏng ModelSim.
RTL Code mẫu:
module serial_to_parallel (clk, rst_n, start,sdi,rx_en, shift_reg,
counter,finish);
input clk;
input rst_n;
input start;
input sdi;
output [7:0] shift_reg;
output rx_en, finish;
output [2:0] counter;
reg rx_en, finish;
reg [2:0] counter;
reg [7:0] shift_reg;
endmodule
Hình 9.9 Sơ đồ khối kiểm tra mạch chuyển đổi nối tiếp sang song song.
Trình tự kiểm tra.
8
Tạo xung clock cho hệ thống, sử dụng always hoặc forever.
Đặt tín hiệu rst_n = 0 để kiểm tra hoạt động của chức năng reset hệ thống. Sau
đó bật tín hiệu rst_n =1 để hệ thống hoạt động ở chế độ thường.
- Tạo tín hiệu vào nối tiếp và các tín hiệu điều khiển:
Thiết lập giá trị start = 1’b1 trong một chu kỳ xung clk để hệ thống bắt đầu;
Tạo các giá trị tín hiệu vào sdi là 0 hoặc 1 theo từng chu kỳ xung clk.
Quan sát, phân tích và kiểm tra sự hoạt động của các tín hiệu.
2.5.2 Code Testbench mẫu.
module serial_to_parallel_tb();
reg clk_tb;
reg rst_n_tb;
reg start_tb;
reg sdi_tb;
wire rx_en_tb;
wire [2:0] counter_tb;
wire [7:0] shift_reg_tb;
wire finish_tb;
serial_to_parallel DUT(.clk(clk_tb),
.rst_n(rst_n_tb),
.start(start_tb),
.rx_en(rx_en_tb),
.sdi(sdi_tb),
.counter(counter_tb),
.finish(finish_tb),
.shift_reg(shift_reg_tb)
);
initial #200 $stop;
endmodule
9
Hình 9.10 Dạng sóng testbench để kiểm tra hoạt động của mạch chuyển đổi nối tiếp
sang song song.
C. Thực hành.
1) Đọc hiểu phân tích thiết kế của IP chuyển đổi dữ liệu nối tiếp sang song song và IP
chuyển đổi dữ liệu song song sang nối tiếp.
2) Giaỉ thích sơ đồ nguyên lý hoạt động của IP trên.
3) Thực hiện mô phỏng hoạt động của các IP trên ModelSim và phân tích dạng sóng
của các tín hiệu, từ đó kiểm tra sự hoạt động của mạch.
4) Liệt kê tất cả các trường hợp cần test của IP trên. Viết miêu tả testcase cho các
trường hợp còn lại. Quan sát giá trị ngõ ra, phân tích và đánh giá chức năng đó.
5) Tạo vip, scoreboard, cherker cho các trường hợp testcase trên.
10