Professional Documents
Culture Documents
BÀI TẬP NHÓM CHƯƠNG 3
BÀI TẬP NHÓM CHƯƠNG 3
• Mô phỏng:
- Trường hợp đếm lên các mode x1, x2, x4:
1
- Trường hợp đếm xuống các mode x1, x2, x4:
2
- Nhận xét: chương trình đã chạy đúng với yêu cầu đặt ra. Khi khởi động giá trị
đếm sẽ bắt đầu từ 32768. Khi A nhanh pha hơn B thì đếm lên và khi B nhanh
pha hơn A thì đếm xuống. Khi rst ở mức cao thì bộ đếm được reset về giá trị ban
đầu.
3
Bài 2: Module đọc cảm biến siêu âm:
• Yêu cầu:
- Đầu vào clk (1us), EchoPulse
- Đầu ra 16 bit D[15:0], Trigger
- Chân Trigger có độ rộng xung 10us, lặp lại với chu kỳ T = 50ms (Chỉnh T = 1ms
khi mô phỏng)
- Ngõ ra D[15:0] cập nhật khi có cạnh xuống của EchoPulse. (Đơn vị đo us).
- Nếu D = 0xFFFF thì không được tăng D.
• Chương trình verilog
4
• Mô phỏng:
Chân Trigger có độ rộng xung 10us, lặp lại với chu kỳ T = 1ms
Ngõ ra D[15:0] cập nhật khi có cạnh xuống của EchoPulse.
Nếu trong chu kỳ T=1ms không có xung EchoPulse phản hồi thì ngõ ra D sẽ xuất ra giá trị
65536 (0xFFFF).
5
Bài 3. Module nội suy cho máy CNC, Robot:
• Yêu cầu:
- Viết cho 2 trục X, Y.
- Khi có xung cạnh lên của WR, Nx nạp giá trị mới. Nhưng giá trị này không
tác động ở chu kì T hiện tại, mà tác động ở chu kỳ T kế tiếp.
- Khi không ghi giá trị Nx ( không xuất xung WR) ở chu kì T hiện tại, chu
kỳ T kế tiếp không được xuất xung ra chân Pulse.( không được lấy giá trị
cũ để rải tiếp)
- Khi mô phỏng, add thêm 1 ngõ ra flag_T để kiểm tra hết mỗi chu kỳ T
- Mô phỏng N = 10, cố định ( không đổi N)
- Clk = 1us, clk1 = 100us, xuất xung dựa vào clk1, các tín hiệu khác dựa
vào clk
- Cho phép buffer tối đa 4 xung WR trong 1 chu kỳ flag_T, không lưu buffer
nếu xung WR thứ 5 xảy ra, Nbuff = 4. Khi ghi đủ 4 giá trị cờ flag_full = 1.
Kiểm tra chỉ khi flag_full = 0 (khi Nbuff = 3,2,1,0) mới được WR tiếp.
6
• Chương trình Verilog:
7
8
9
• Mô phỏng
- Khi không có xung WR ở chu kì T hiện tại, thì chu kì T kế tiếp không xuất xung.
- Ở chu kỳ có xung WR và Nx = 4, giá trị được lưu vào buffer và được xuất xung
khi tới chu kỳ kế tiếp.
- Thanh ghi buffer lưu lần lượt giá trị 0,4,2,7 khi có xung WR, trừ trường hợp 5
xung ở cuối cùng. Cùng lúc khi thanh ghi buffer lưu đủ 4 giá trị thì ngõ ra
flag_full lên mức 1.
- Xuất lần lượt 0,4,2,7 xung theo đúng thứ tự và chu kì T.
10
- Trường hợp Nx[7] = 1, thì ngõ ra Dir lên mức cao, điều khiển đảo chiều quay
động cơ
11
- Sử dụng kết hợp 2 module trong Block Diagram/Schematic File để điều khiển
đồng thời 2 trục X,Y
12