Trong đó các bit từ 0 đến 22 đƣợc dành riêng cho những mục đích khác. Các bit còn lại tùy theo mục đích sử dụng mà ngƣời dùng có thể đọc hoặc ghi dữ liệu các giá trị tƣơng ứng để điều khiển thực thi Master, Slave; Reset/thực thi bộ đệm truyền, bộ đệm nhận; định nghĩa cực tính xung clock (bit CPOL) hay định dạng khung truyền dữ liệu (bit CPHA); điều khiển việc thiết lập chế độ hoạt động lặp vòng cục bộ (bit LOOP).
Để điều khiển việc truyền dữ liệu từ MicroBlaze tới DAC thì thanh ghi điều khiển phải đƣợc cấu hình để có thể lựa chọn slave ở chế độ thủ công, cấu hình master và cho phép hệ thống SPI hoạt động. Khi đó, giá trị ghi vào thanh ghi này là 0x86. Và nếu cho phép master thực thi thì giá trị ghi vào thanh ghi này là 0x186.
Việc reset hoặc clear bộ đệm truyền và bộ đệm nhận dữ liệu khối SPI đƣợc thực hiện bằng cách ghi giá trị „1‟ hoặc „0‟ vào bit 25, bit 26 của thanh ghi điều khiển SPI. Khi đó giá trị ghi vào thanh ghi này là 0x60 hoặc 0x00.
- Thanh ghi trạng thái SPI (SPISR): Thanh ghi này có địa chỉ đƣợc xác định bởi “địa chỉ cơ sở + 0x64”. Đây là thanh ghi chỉ đọc cho phép ngƣời lập trình có thể thấy đƣợc một vài trạng thái bên ngoài của khối XPS SPI. Nếu giá trị đọc ra trên bit số 29 của thanh ghi này bằng „1‟ thì bộ đệm truyền của khối SPI rỗng và ta có thể tiến hành ghi dữ liệu vào thanh ghi truyền dữ liệu. Nhƣ vậy, trƣớc khi truyền dữ liệu ta phải kiểm tra bit này để xác định trạng thái của bộ đệm truyền.
- Thanh ghi truyền dữ liệu (SPIDTR): Thanh ghi này có địa chỉ đƣợc xác định bởi “địa chỉ cơ sở + 0x68” dùng để ghi giá trị dữ liệu đƣợc truyền lên bus SPI. Khi bit cho phép truyền thiết lập ở mức cao, dữ liệu đƣợc truyền từ thanh ghi này tới thanh ghi dịch. Nếu một quá trình truyền trong tiến trình, dữ liệu trong thanh ghi SPIDTR đƣợc tải lên thanh ghi dịch ngay sau khi dữ liệu trong thanh ghi dịch đƣợc truyền tới thanh
ghi nhận dữ liệu thì một quá trình truyền mới đƣợc bắt đầu. Dữ liệu đƣợc lƣu trong thanh ghi SPIDTR cho đến khi có một dữ liệu khác ghi đè lên.
Thanh ghi truyền dữ liệu là thanh ghi chỉ đƣợc viết khi khoảng không gian dành cho dữ liệu viết đã sẵn sàng. Nếu cứ cố tình viết khi bộ đệm nhận FIFO đầy thì quá trình thực hiện viết trên bus PLB sẽ bị lỗi. Mỗi lần ghi giá trị vào thanh ghi này là 8 bit, nếu khung truyền dữ liệu của DAC là 32 bit thì khi thực hiện ứng dụng ta phải tiến hành 4 lần truyền lần lƣợt liên tiếp.
- Thanh ghi lựa chọn Slave (SPISSR): Thanh ghi này có địa chỉ đƣợc xác định bởi “địa chỉ cơ sở + 0x70”, nó lƣu trữ một mức tích cực thấp, một Slave mã hóa lựa chọn véc tơ SS có chiều dài N, với N là số slave đƣợc thiết lập bởi tham số C_NUM_SS_BITS. Đây là thanh ghi 32 bit, các bit từ 0 - (31-N) là các bit đƣợc dành riêng. Các bit từ (31 –N +1) -31: có mức tích cực thấp, một slave mã hóa lựa chọn véc tơ có chiều dài N bit. Với N<= chiều dài bus dữ liệu. Các slave đƣợc đánh số thứ tự từ phải sang trái bắt đầu từ 0 là bit có trọng số thấp nhất. Số slave tƣơng ứng với các chỉ dẫn của tín hiệu SS.
Khi kết nối khối giao tiếp mềm SPI với bộ chuyển đổi số-tƣơng tự DAC thì khối SPI sẽ đóng vai trò là master và DAC đóng vai trò là slave. Khi đó, số slave đƣợc lựa chọn là 1.
- Thanh ghi Reset phần mềm: Thanh ghi này có địa chỉ đƣợc xác định bởi “địa chỉ cơ sở + 0x40”. Nó cho phép ngƣời lập trình reset khối XPS SPI mà không phụ thuộc vào các thiết bị khác trong hệ thống. Giá trị reset viết vào thanh ghi này là 0x0000000A.
Mô-đun các thanh ghi ngắt INTR: Khối này gồm 3 thanh ghi điều khiển ngắt IP là thanh ghi cho phép ngắt toàn cục 32 bit, thanh ghi cho phép ngắt IP 8 bit và thanh ghi trạng thái ngắt IP 8 bit.
Mô-đun SPI: Gồm một thanh ghi dịch, một bộ tạo tốc độ Baud BRG và một khối điều khiển. Mô-đun này hỗ trợ giao diện SPI EEPROM, gồm cả máy trạng thái điều khiển logic và giá trị logic ban đầu. Khi tín hiệu đƣợc MicroBlaze ghi vào thanh ghi truyền dữ liệu SPI, nó sẽ đƣợc chuyển đến thanh ghi dịch của mô đun này và đƣa ra chân tín hiệu dữ liệu truyền MOSI_O.
Các bộ đệm tùy chọn FIFO: Bộ đệm truyền TxFIFO và bộ đệm nhận RxFIFO đƣợc thực hiện trong suốt quá trình truyền và nhận khi đƣợc cho phép bởi tham số C_FIFO_EXIT.
Các tín hiệu vào/ra giao diện SPI: SPI bao gồm các tín hiệu vào/ra để giao tiếp với các ngoại vi nhƣ tín hiệu clock, tín hiệu lựa chọn slave, tín hiệu truyền dữ liệu…
xung clock SCK_O, tín hiệu lựa chọn slave SS_O. Chân tín hiệu SCK_O sẽ đƣợc nối với tín hiệu SPI_SCK (chân U16) của chip FPGA tƣơng ứng với chân tín hiệu SCK (chân số 8) của DAC; chân tín hiệu MOSI_O sẽ đƣợc nối với tín hiệu SPI_MOSI (chân T4) của chip FPGA tƣơng ứng với chân tín hiệu SDI (chân số 9) của DAC; chân tín hiệu SS_O sẽ đƣợc nối với tín hiệu DAC_CS (chân N8) của chip FPGA tƣơng ứng với chân tín hiệu CS/LD (chân số 7) của DAC.
Sử dụng các công cụ của EDK gán các chân tín hiệu và xác định hƣớng truyền dữ liệu nhƣ mô tả ở trên ta đƣợc kết quả chỉ ra trong file UCF, MSH của Project nhƣ