Ynicky 0 June 13, 2009 Posted June 13, 2009 · Report post Чтобы не плодить новую тему, напишу сдесь. Если, конечно, автор темы не против. Недавно прикрепили ко мне студента, а так как в связи с кризисом и мне то делать особо нечего, то чего уж говорить про бедного студента. Поэтому решил ему дать интересную тему (с моей точки зрения) для обучения разработке soc проектов со встроенным процессорным ядром (чем собственно я и занимаюсь). За основу взяли студенческое risc ядро, описанное в книге Сергиенко А.М. “VHDL для проектирования вычислительных устройств”. Систему команд и архитектуру немного доработали. Сделали простенький soc проект в Active-HDL81 для FPGA ф.Actel. Его, собственно, и предлагаю для повторения всеми желающими. С некоторыми доработками его можно реализовать и для других FPGA. Пока, для простоты, пзу команд сделали в виде vhdl. Хотелось бы общими усилиями протестировать процессорное ядро. Да и может кому пригодится. Оговорюсь сразу, проект сырой. Поэтому будут исправления и доработки. Может у кого будут дельные предложения. Готов рассмотреть. Краткое описание процессора можно найти в Директории "Doc". Ассемблер - в директории "st16asm". Я его делал в "Microsoft Visual Studio 2008". Еще не разобрался, как сделать, чтобы ".exe" файл запускался на других компьютерах, где нет MSVC2008 (не программист). Компилятор сделаю попозже, после отработки системы команд. Это будет LCC, так как есть уже опыт написания "machine description" файлов под свою систему команд. Ну вот, собственно, пока все. Будут вопросы, задавайте. Николай. risc_st.rar Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 June 14, 2009 Posted June 14, 2009 · Report post Выкладываю новую версию проекта. Просьба сообщить, работает ли ассемблер у кого нет "Microsoft Visual Studio". Николай. risc_st.rar Quote Share this post Link to post Share on other sites More sharing options...
Leka 1 June 14, 2009 Posted June 14, 2009 · Report post Команды Break и LU - что делают? И зачем выделенный регистр SP (при отсутствии команд push/pop и аппаратном стеке возвратов)? Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 June 14, 2009 Posted June 14, 2009 · Report post Команды Break и LU - что делают? И зачем выделенный регистр SP (при отсутствии команд push/pop и аппаратном стеке возвратов)? LU - Load Byte Unsigned. Беззнаковая загрузка байта. Команда Break нужна только при отладке ПО с помощью внутрисхемного эмулятора, если память программ является оперативной. Вместо команды на которой ставится точка останова заносится Break. При дальнейшем пуске Break заменяется обратно на штатную команду. Если память программ - ПЗУ, то точки останова прописываются через JTAG в специальный регистр внутрисхемного эмулятора. С помощью аппаратного компаратора сравнивается текущий адрес команды и адрес точки останова. При совпадении происходит остановка процессора. Через JTAG процессор можно снова запустить, блокировав сигнал с компаратора на один период тактовой частоты процессора. Регистр SP - это регистр общего назначения, используемый программой в качестве указателя на стек данных. Николай. Quote Share this post Link to post Share on other sites More sharing options...
Leka 1 June 14, 2009 Posted June 14, 2009 · Report post Просьба сообщить, работает ли ассемблер у кого нет "Microsoft Visual Studio". Работает. Quote Share this post Link to post Share on other sites More sharing options...
des00 27 June 15, 2009 Posted June 15, 2009 · Report post Выкладываю новую версию проекта. для тех кто альдеком не пользуется, могли бы и 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 нет. Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 June 15, 2009 Posted June 15, 2009 · Report post для тех кто альдеком не пользуется, могли бы и 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. Если успею, вечером добавлю в описание. Николай. Quote Share this post Link to post Share on other sites More sharing options...
SFx 0 June 15, 2009 Posted June 15, 2009 · Report post для тех кто альдеком не пользуется, могли бы и 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 З.Ы. пардон, страницу не обновил.... Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 June 15, 2009 Posted June 15, 2009 · Report post Исправили ошибки загрузки/выгрузки. Николай. risc_st.rar Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 June 17, 2009 Posted June 17, 2009 · Report post Подкорректировали проект. Проверили прерывания. Дополнил описание. В принципе проект "готов". Осталось доделать внутрисхемный эмулятор для работы с отладчиком (программа на PC). Николай. risc_st.rar Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 July 1, 2009 Posted July 1, 2009 · Report post Написали JTAG на vhdl, чтобы можно было проект зашить в другие FPGA (останется поменять ОЗУ). Отмоделировали команды (stop, step, run) внутрисхемного эмулятора. Подработал ассемблер. Написал еще несколько тестовых программок. Проверили в железе работу с семисегментным индикатором. Николай. risc_st.rar Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 July 8, 2009 Posted July 8, 2009 · Report post Добавили 2 блока к внутрисхемному эмулятору. Отмоделировали чтение памяти команд и данных в режиме отладки. Остальное - после отпуска. Николай. risc_st.rar Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 September 10, 2009 Posted September 10, 2009 · Report post Добавили блок чтения регистрового файла в режиме отладки. Николай. risc_st.rar Quote Share this post Link to post Share on other sites More sharing options...
kuchynski 0 October 16, 2009 Posted October 16, 2009 · Report post Пользуюсь своим процессором 5 год, за это время и отладил до безглючности. Работает на Xilinx. Из плюсов: язык форт, встроенные uart, фильтры с плавающей точкой, делители, разрядность до 32 бит с/без знака, переменное число поддерживаемых команд. Из минусов: средний текстовый редактор, недописанный отладчик, полностью отсутствует описание. Quote Share this post Link to post Share on other sites More sharing options...
Aner 15 October 16, 2009 Posted October 16, 2009 · Report post Пользуюсь своим процессором 5 год, за это время и отладил до безглючности. Работает на Xilinx. Из плюсов: язык форт, встроенные uart, фильтры с плавающей точкой, делители, разрядность до 32 бит с/без знака, переменное число поддерживаемых команд. Из минусов: средний текстовый редактор, недописанный отладчик, полностью отсутствует описание. респект и уважение за такое. Хотелось узнать следующее из плюсов/ минусов: Тактовая, производительность в ~мипсах для математики, если подсчитывали. Если сравнить с имеющимися ARM_ами то вот к какому ближе (по архитектуре) и есть ли преимущество и в чем? По потреблению наверное проигрыш. Насколько хорош компилятор из форта получился? Дебагер тоже наверное медленный, не реалтайм. С описанием понимаю вас, такое часто бывает. Поскольку требует много времени. Quote Share this post Link to post Share on other sites More sharing options...