Ynicky 0 13 июня, 2009 Опубликовано 13 июня, 2009 · Жалоба Чтобы не плодить новую тему, напишу сдесь. Если, конечно, автор темы не против. Недавно прикрепили ко мне студента, а так как в связи с кризисом и мне то делать особо нечего, то чего уж говорить про бедного студента. Поэтому решил ему дать интересную тему (с моей точки зрения) для обучения разработке soc проектов со встроенным процессорным ядром (чем собственно я и занимаюсь). За основу взяли студенческое risc ядро, описанное в книге Сергиенко А.М. “VHDL для проектирования вычислительных устройств”. Систему команд и архитектуру немного доработали. Сделали простенький soc проект в Active-HDL81 для FPGA ф.Actel. Его, собственно, и предлагаю для повторения всеми желающими. С некоторыми доработками его можно реализовать и для других FPGA. Пока, для простоты, пзу команд сделали в виде vhdl. Хотелось бы общими усилиями протестировать процессорное ядро. Да и может кому пригодится. Оговорюсь сразу, проект сырой. Поэтому будут исправления и доработки. Может у кого будут дельные предложения. Готов рассмотреть. Краткое описание процессора можно найти в Директории "Doc". Ассемблер - в директории "st16asm". Я его делал в "Microsoft Visual Studio 2008". Еще не разобрался, как сделать, чтобы ".exe" файл запускался на других компьютерах, где нет MSVC2008 (не программист). Компилятор сделаю попозже, после отработки системы команд. Это будет LCC, так как есть уже опыт написания "machine description" файлов под свою систему команд. Ну вот, собственно, пока все. Будут вопросы, задавайте. Николай. risc_st.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ynicky 0 14 июня, 2009 Опубликовано 14 июня, 2009 · Жалоба Выкладываю новую версию проекта. Просьба сообщить, работает ли ассемблер у кого нет "Microsoft Visual Studio". Николай. risc_st.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 14 июня, 2009 Опубликовано 14 июня, 2009 · Жалоба Команды Break и LU - что делают? И зачем выделенный регистр SP (при отсутствии команд push/pop и аппаратном стеке возвратов)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ynicky 0 14 июня, 2009 Опубликовано 14 июня, 2009 · Жалоба Команды Break и LU - что делают? И зачем выделенный регистр SP (при отсутствии команд push/pop и аппаратном стеке возвратов)? LU - Load Byte Unsigned. Беззнаковая загрузка байта. Команда Break нужна только при отладке ПО с помощью внутрисхемного эмулятора, если память программ является оперативной. Вместо команды на которой ставится точка останова заносится Break. При дальнейшем пуске Break заменяется обратно на штатную команду. Если память программ - ПЗУ, то точки останова прописываются через JTAG в специальный регистр внутрисхемного эмулятора. С помощью аппаратного компаратора сравнивается текущий адрес команды и адрес точки останова. При совпадении происходит остановка процессора. Через JTAG процессор можно снова запустить, блокировав сигнал с компаратора на один период тактовой частоты процессора. Регистр SP - это регистр общего назначения, используемый программой в качестве указателя на стек данных. Николай. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 14 июня, 2009 Опубликовано 14 июня, 2009 · Жалоба Просьба сообщить, работает ли ассемблер у кого нет "Microsoft Visual Studio". Работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 июня, 2009 Опубликовано 15 июня, 2009 · Жалоба Выкладываю новую версию проекта. для тех кто альдеком не пользуется, могли бы и vhd файл из risc_cpu.bde сгенерировать, делов то на минуту :( зачем "По сигналу RESET разряды всех регистров обнуляются." вот это сделали ? это сразу режет вам крылья, при использовании на хилой платформе + файл rfile.vhd -> R_RF4:process(CLK,RST,data_w,rfsel) вот вас прибило каждый регистр ручками описывать %))) в файле tst_alu.asm есть такой код imm 0xFF00 lea r5,0x0 но в доке Doc\to101st16.doc команды lea нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ynicky 0 15 июня, 2009 Опубликовано 15 июня, 2009 · Жалоба для тех кто альдеком не пользуется, могли бы и vhd файл из risc_cpu.bde сгенерировать, делов то на минуту :( зачем "По сигналу RESET разряды всех регистров обнуляются." вот это сделали ? это сразу режет вам крылья, при использовании на хилой платформе + файл rfile.vhd -> R_RF4:process(CLK,RST,data_w,rfsel) вот вас прибило каждый регистр ручками описывать %))) в файле tst_alu.asm есть такой код imm 0xFF00 lea r5,0x0 но в доке Doc\to101st16.doc команды lea нет. 1. Эти файлы генерятся автоматически при каждой компиляции и находятся в директории compile. 2. Виноват, соврал. При использовании в качестве регистрового файла внутренней памяти исходное значение берется из файлов инициализации (r8x256_M0.mem). rfile.vhd - как пример на регистрах. 3. lea - Load Effective Address. Это псевдокоманда для занесения в регистры констант. lea r5,0xFF00 преобразуется ассемблером в imm 0xFF00 addi r5,r0,0 Но можно писать и как в tst_alu.asm. Если успею, вечером добавлю в описание. Николай. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SFx 0 15 июня, 2009 Опубликовано 15 июня, 2009 · Жалоба для тех кто альдеком не пользуется, могли бы и vhd файл из risc_cpu.bde сгенерировать, делов то на минуту :( смотрите файлы из архива, они как раз вам и нужны risc_st.rar\risc_st\risc_st_core\compile\risc_cpu.vhd risc_st.rar\risc_st\risc_st_core\compile\risc_st_core.vhd risc_st.rar\risc_st\risc_st_core\compile\risc_sync.vhd З.Ы. пардон, страницу не обновил.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ynicky 0 15 июня, 2009 Опубликовано 15 июня, 2009 · Жалоба Исправили ошибки загрузки/выгрузки. Николай. risc_st.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ynicky 0 17 июня, 2009 Опубликовано 17 июня, 2009 · Жалоба Подкорректировали проект. Проверили прерывания. Дополнил описание. В принципе проект "готов". Осталось доделать внутрисхемный эмулятор для работы с отладчиком (программа на PC). Николай. risc_st.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ynicky 0 1 июля, 2009 Опубликовано 1 июля, 2009 · Жалоба Написали JTAG на vhdl, чтобы можно было проект зашить в другие FPGA (останется поменять ОЗУ). Отмоделировали команды (stop, step, run) внутрисхемного эмулятора. Подработал ассемблер. Написал еще несколько тестовых программок. Проверили в железе работу с семисегментным индикатором. Николай. risc_st.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ynicky 0 8 июля, 2009 Опубликовано 8 июля, 2009 · Жалоба Добавили 2 блока к внутрисхемному эмулятору. Отмоделировали чтение памяти команд и данных в режиме отладки. Остальное - после отпуска. Николай. risc_st.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ynicky 0 10 сентября, 2009 Опубликовано 10 сентября, 2009 · Жалоба Добавили блок чтения регистрового файла в режиме отладки. Николай. risc_st.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuchynski 0 16 октября, 2009 Опубликовано 16 октября, 2009 · Жалоба Пользуюсь своим процессором 5 год, за это время и отладил до безглючности. Работает на Xilinx. Из плюсов: язык форт, встроенные uart, фильтры с плавающей точкой, делители, разрядность до 32 бит с/без знака, переменное число поддерживаемых команд. Из минусов: средний текстовый редактор, недописанный отладчик, полностью отсутствует описание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 6 16 октября, 2009 Опубликовано 16 октября, 2009 · Жалоба Пользуюсь своим процессором 5 год, за это время и отладил до безглючности. Работает на Xilinx. Из плюсов: язык форт, встроенные uart, фильтры с плавающей точкой, делители, разрядность до 32 бит с/без знака, переменное число поддерживаемых команд. Из минусов: средний текстовый редактор, недописанный отладчик, полностью отсутствует описание. респект и уважение за такое. Хотелось узнать следующее из плюсов/ минусов: Тактовая, производительность в ~мипсах для математики, если подсчитывали. Если сравнить с имеющимися ARM_ами то вот к какому ближе (по архитектуре) и есть ли преимущество и в чем? По потреблению наверное проигрыш. Насколько хорош компилятор из форта получился? Дебагер тоже наверное медленный, не реалтайм. С описанием понимаю вас, такое часто бывает. Поскольку требует много времени. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться