Professional Documents
Culture Documents
- Idle: Không read/write nhưng nội dung bộ nhớ được bảo tồn -> được dùng để giảm power
comsumpsiom
- Slave: Đáp ứng với yêu cầu truyền (có nguồn gốc từ Matsr)
+ SRAM, DRAM, Cache mà CPU, hay DMA sẽ ghi dữ liệu lên đó
- Avalon Bus: Giúp phân xử dữ liệu thực hiện trong hệ thống (Có thể hiểu giống 74138 trong
cấu trúc SRAM môn Kiến trúc BUS). Ngoài ra còn ngắt, giải mã địa chỉ
+ Ví dụ CPU đang truyền dữ liệu (trao đổi) với DRAM thì DMA đâu thể vào được vì
không thể đáp ứng cho DMA -> cần quá trình phân xử
+ Master không được phép truy xuất trực tiếp đến Slave mà phải thông qua Avalon
Bus (hoặc 1 số BUS khác hiện nay)
+ Ngắt khi có 2 master cùng thực hiện thì nó sẽ ngắt 1 trong 2 tùy theo ưu tiên do
Bus thiết lập.
+ Instruction Memory (Slave) dành riêng cho CPU (Master) nên không cần quá trình
phân xử từ Avalon BUS.
+ Avalon sẽ lớn nhỏ tùy hệ thống
+ Tín hiệu giao tiếp với Slave: Read/Write, Chipselect
- Byteenable: đường Bus là 32 bits, mà mình chỉ dùng có 8 bits thôi => Dùng 4 bits dùng cho
byteenable, BE0, BE1, BE2, BE3 quyết định enable đọc ghi 4 byte
- Các tín hiệu giữa Slave với Avalon trong PIO SW, LEDR:
+ ChipSelect:
Từ Avalon qua Slave
Lựa chọn Slave
Tạo ra từ giải mã địa chỉ
+ Xung Clock
Từ Avalon qua Slave
Đồng bộ
Chỉ định các hoạt động đồng thời với nhau
+ Reset
Thiết lập hệ thống ở trạng thái mặc định
+ Read
Từ Avalon qua Slave
Dùng để yêu cầu đọc dữ liệu từ Slave
+ Write
Từ Avalon qua Slave
Dùng để yêu cầu ghi dữ liệu từ Slave
+ Readdata
Từ Slave qua Avalon
Trả dữ liệu trả về từ Slave cho Avalon
Read 1bit, còn Readdata là 8-bit, 16-bit hay 32-bit
+ Writedata
Từ Avalon qua Slave
Dữ liệu mà Avalon ghi lên Slave
+ Address
Nếu Slave mình là SRAM thì ta cần tín hiệu địa chỉ để chọn thanh ghi
+ Cả 2 quá trình như nhau tuy nhiên Readdata sẽ xuất hiện khi có dữ liệu từ Slave
còn Writedata sẽ có dữ liệu trong xuất quá trình write.
+ Tín hiệu Wait request hoặc wait được set (mặc định 0)
- Example 14, Latency:
Là delay số chu kỳ đọci, ví dụ tại A nó cho phép đọc thì tại chu kỳ C (chu kỳ thứ 2 sau
A) sẽ có dữ liệu.
Câu hỏi
Tại Example 1, vì sao tại A cạnh lên xung clock gởi yêu cầu các tín hiệu điều khiển nhưng tại sao
tới B các tính hiệu mới có gia trị thực sự?
Có thể hiểu tín hiệu được gửi thông qua flipflop, khi có cạnh lên xung, tín hiệu nằm sẵn ở input
sẽ được đưa qua output, tuy nhiên thực tế mọi flipflop đều có thời gian trễ. Thời gian từ A tới B
hay A tới C đều là thời gian trễ của các tín hiệu.
Tại Example 1, vì sao tín hiệu CS lại có thời gian trễ nhiều hơn?
Do cần phải qua giải mã địa chỉ
Vì sao đa số tín hiệu chọn tác động mức 0?
Liên quan đến nhiễu và công suất tiêu thụ, nó sẽ tốn điện nhiều hơn khi active 1. Bên cạnh đó,
mức 1 gần nhiễu hơn.
Một vấn đề xảy ra khi HS, VS phụ thuộc vào độ pixel nếu ta hard 1 độ pixel nhất định là một bad
idea. Thêm nữa, nếu Image DMA đọc hình ảnh, nó sẽ cần xác định địa chỉ đầu và độ dài pixel tức
là độ pixel, nó hard như vậy cũng là 1 bad idea. Vậy để giải quyết vấn đề đó ta cần làm gì?
Cũng như mọi hệ thống đang sử dụng, để giải quyết vấn đề chúng ta cần dùng thanh ghi. EX:
JTAG UART, người ta thiết kế thanh ghi có thể set giá trị bps lên đó và hệ thống sẽ lấy đó để
chạy, khiến cho linh hoạt hơn và tất quả phải qua cấu hình. Thanh ghi (thanh ghi cấu hình) cần
dùng:
+ Thanh ghi lưu trữ giá trị về độ phân giải.
+ Thanh ghi chứa Base address (chứa địa chỉ đầu của add)
+ Thanh ghi Start (stop nếu cần) -> cần để ngăn ngừa nó start liên tục hay bật máy lên cái start -
> vậy thì dữ liệu hay độ phân giải ở đâu để hiện thị
640x480
8000x600
1024x768
1pixel = 2bytes
VGA là chuẩn analog nhưng hình ảnh lưu trữ trong máy tính là Digital