VC232CPU
Микропроцессор VC232CPU является 32-х разрядным процессором. Он первоначально создавался как способ обучения языку VHDL, но в последствии это занятие так увлекло меня, что я решил создать полновесный процессор, имеющий все основные функции (прерывания, прямой доступ к памяти и т.д. и т.п.). Естественно, я его мог реализовать только в FPGA, а для этого он должен был занимать мало места. Еще я хотел, чтобы он имел С-компилятор и ассемблер. Но так как я не профессиональный программист, мне пришлось брать готовые исходники и переделывать их на мой процессор, изменив и его (т.е. процессор) в свою очередь. Все это и определило существующую архитектуру процессора со всеми его недостатками и преимуществами. К нему я также создал программу отладчика на Borland C++ Builder 5.0 с редактором кода, работающую совместно с внутрисхемным эмулятором (через JTAG порт), позволяющим отлаживать программы непосредственно на рабочей плате. Так как первоначальные С-компилятор и ассемблер были ориентированы на архитектуру многорегистровых процессоров, мне пришлось ввести регистры общего назначения для работы с программами, написанными на С, которые в массовом количестве используют команды загрузки-выгрузки регистров. Если же писать программы (или их редактировать) в моем редакторе кода (что не на много сложнее ассемблера благодаря интерактивному интерфейсу пользователя), то операции над ячейками памяти и стеком можно производить напрямую не используя частые пересылки регистр-память и память-регистр. В дальнейшем я хочу добавить и ассемблер такими командами.
Я реализовал свой процессор на FPGA XCV400HQ240-4 ф. Xilinx, хотя он в минимальной конфигурации вмещается и в XCV200PQ240. Просто кроме процессора мне нужно было вместить еще кое-что. Проект я создавал в OrCADe 9.1, а после получения таблицы связи транслировал в Virtex программой Foundation 3.1. Рабочая частота процессора в моей аппаратуре составляет 25МГц (MSCLK), при входной – 50МГц (CLKP), что соответствует 6 миллионам операций в секунду (регистр-регистр, память-память(без тактов ожидания)). При синтезе программой Exemplar Leonardo Spectrum LS2001_1D максимальная частота составила 36МГц, что соответствует 9 миллионам операций в секунду. Я старался делать описание VHDL не привязанное к FPGA определенной фирмы. Насколько мне это удалось - судить вам.
Описание процессора (версия 3.1.2) (не окончательное) Файл tovc232cpu.doc (ZIP архив) от 15.03.02.
Описание внутрисхемного эмулятора Файл wevc232cpu.doc (ZIP архив) от 08.01.02.
C-компилятор (LCC 4.1) (версия 1.2) (ZIP архив) от 18.03.02.
Ассемблер (версия 1.2) (ZIP архив) от 09.04.02.
Отладчик для PC (версия 1.2) (ZIP архив) от 08.01.02.
Описание аппаратуры на VHDL (3.1) (ZIP архив) от 08.01.02.
Исходники для С-компилятора и ассемблера я брал оттуда:
A Retargetable Compiler for
ANSI C
Схему для JTAG кабеля можно взять там:
http://www.xilinx.com/support/programr/files/0380507.pdf
Еще одна интересная ссылка:
Комментарии, пожелания, советы и критику присылайте по адресу:
E-mail: vc232cpu@mail.ru