Compilador MicroBlaze

O compilador a usar na UC de AAC é distribuido pela própria Xilinx, estando instalado na directoria do ISE/Vivado:

  • Xilinx ISE 14.x:
    • Windows:
      <PATH_TO_XILINX_ISE>\Xilinx\<XILINX_VERSION>\ISE_DS\EDK\gnu\microblaze\nt\bin
    • Linux:
      <PATH_TO_XILINX_ISE>/Xilinx/<XILINX_VERSION>/ISE_DS/EDK/gnu/microblaze/lin/bin
  • Xilinx Vivado:
    • Windows:
      <PATH_TO_XILINX_VIVADO>\<version>\tps\mingw\<version>\win64.o\nt64\bin\
    • Linux:
      <PATH_TO_XILINX_VIVADO>/<version>/tps/mingw/<version>/win64.o/lin/bin/

De forma a gerar os ficheiros VHD a partir dos binários é ainda necessário utilizar os programas auxiliares, os quais são distribuídos sob o formato zip.

Dentro do ficheiro zip encontra-se um ficheiro README com a indicação do conteúdo dos programas auxiliares.

Em Windows, é necessário ter ainda as ferramentas para compilação dos programas auxiliares. Recomenda-se a utilização do programa MobaXterm (cygwin), o qual permite a instalação de um plugin com as ferramentas de compilação.


Ficheiros exemplo gerados pelo compilador:

Passos para utilização do compilador:

  1. (Apenas para ambientes Windows) Instalação do MobaXTerm (ou equivalente)
    1. Fazer download do MobaXTerm.
    2. Instalar/descompactar o ficheiro.
    3. Fazer download do plugin de desenvolvimento de programas (inclui o gcc), colocando-o na pasta onde instalou o MobaXTerm
  2. Faça download do pacote com os programas auxiliares e descomprima-os para uma pasta "<dir>/".
  3. Compile os programas auxiliares fazendo "make" na pasta "<dir>/src/util". Os ficheiros binários resultantes da compilação serão colocados na pasta "<dir>/bin"
  4. Faça uma cópia da pasta "<dir>/src/hello_world/" para "<dir>/src/<my code>/"
  5. Altere o ficheiro "<dir>/src/<my code>/main.c" de forma a implementar o programa pretendido (caso pretenda alterar o nome do ficheiro fonte, modifique ainda a linha 4 do ficheiro "<dir>/src/<my code>/Makefile")
  6. Abra uma shell (MobaXTerm em Windows) e entre na directoria "<dir>/src/<my code>/". Note que no MobaXTerm a pasta C: é indicada como /cygdrive/c
  7. Altere a PATH do sistema de forma a indicar a directoria do compilador para o Microblaze. Para tal pressione o comando:
    • WINDOWS (ISE):
      PATH=<PATH_TO_XILINX>/Xilinx/<XILINX_VERSION>/ISE_DS/EDK/gnu/microblaze/nt/bin:$PATH"
    • WINDOWS (VIVADO):
      PATH=<PATH_TO_XILINX_VIVADO>/<version>/tps/mingw/<version>/win64.o/nt64/bin/:$PATH"
    • LINUX (ISE):
      PATH=<PATH_TO_XILINX>/Xilinx/<XILINX_VERSION>/ISE_DS/EDK/gnu/microblaze/lin/bin:$PATH"
    • LINUX (VIVADO):
    • PATH=<PATH_TO_XILINX_VIVADO>/<version>/tps/mingw/<version>/lin.o/lin/bin/:$PATH"
  8. Altere a Makefile (linhas 40 e 41) indicando o número de bits usados para endereçar a memória. Por omissão, a Makefile disponibilizada cria memórias com 12 bits de endereço. No entanto, sugere-se a utilização de memórias maiores (ex: 16 bits).
  9. Compile o ficheiro fazendo "make all"
  10. Utilize as memórias geradas como memórias de dados e de instruções. Note que o compilador gera uma instrução ("mts")que não está definida no enunciado. Essa instrução não é importante pelo que a pode ignorar (executando-a como se de um NOP se tratasse) ou pode trocar no ficheiro VHDL essa instrução por um OR R0,R0,R0.