Jump to content

    

SolderMan

Участник
  • Content Count

    21
  • Joined

  • Last visited

Community Reputation

0 Обычный

About SolderMan

  • Rank
    Участник
  1. Заливка FPGA прошивки в этом проекте идет из микроконтроллера методом PassiveSerial. Я узнаю.
  2. Ну я клок и так на GCLK завожу. А во втором банке клок понадобился человеку, который прошивкой занимается. Его тоже на GCLK ессно.
  3. Где-то видел такое, вспомнил и решил спросить. Буду очень рад выслушать как сделать правильно.
  4. Приветствую. Занят трассировкой (точнее доработкой) платы с Xilinx Spartan 6, и в новой ревизии девайса нужно завести 50MHz клок с генератора на ещё один пин в другом банке (трасса на стриншоте подсвечена) Хотел узнать, стоит ли ставить последовательно резисторы (отметил красным оголо пада генератора)? Или это в данном случае не обязательно?
  5. Привет всем, я написал маленькую консольную программку, которая по USB заливает прошивку в самопальную плату с Cyclone III по PS-протоколу. Возник вопрос: как, если это вообще возможно, прикрутить её к квартусу? Тоесть вызывать вместо стандартной "Programmer". С уважением
  6. Привет всем, мне понадобилась возможность передавать/принимать информацию между ПК и FPGA (Altera DE1). Для этого я собрал простенькую плату на PIC24F и через USB<->SPI могу "общаться" с моей прошивкой. Я было начал пробовать, но так и не получилось наладить такую коммуникацию через встроенный USB-Blaster. Может кто делал такое? 2 USB кабеля надоели, постоянно какой-то вынимать надо за неимением свободных в ноуте. С уважением Дмитрий p.S. только что наткнулся на топик http://electronix.ru/forum/index.php?showt...=93851&st=0 Жаль конечно что API закрыта. Буду дальше юзать свой адаптер.
  7. Спасибо за наводку! Достаточно подробно описано, всё по-полочкам разложено. Появилось представление о том, как реализовать простую предвыборку команд. Кэширования записи пока не будет. Кэш сделаю для начала размером 1кбайт (8 строк по 128 байт). Буду читать/писать SDRAM c burst=8. Посмотрю что получится! Насколько быстрее будет работать корка.
  8. Привет всем, с некоторых пор я запустил на плате Altera DE1 корку упрощённого MIPS-проца. Всё тикает как надо. В качестве памяти использую SDRAM на частоте 90МГц, cas=2, burst=2. Для чтения/записи 32 бит данных из памяти/в память требуется ровно 7 тактов. Тоесть процессор работает на 12.86МГц. На такой частоте я "выжал" из него около 20DMIPS. Вроде не плохо, но хотелось бы побыстрее! Появилась идея прикрутить к корке простенький кэш инструкций (prefetch), чтобы хоть немного разогнать его. Начал искать в инете информацию о работе кэш-контроллеров, но кроме поверхностного описания принципа ничего не нашел. Поэтому решил обратиться к форумчанам: посоветуйте, как можно реализовать хоть самый простой кэш? Может есть что нибудь почитать на эту тему? Или пример на VHDL/Verilog. Хочу вникнуть, как кэш работает... С уважением Дима
  9. Тогда наверное начну познавать основы Ethernet с ENC28J60. Нашел в инете немного инфы о том, как с ним работать. Когда разберусь с этим чипом, думаю ламерские вопросы по ENC424J600 сами собой отпадут. С уважением Дмитрий Нет. Просто у меня уже есть база, на которой всё это будет в будущем работать. Всё продумано и нет смысла менять. Девайс будет не только плеером и радио. Это только одна из функций.
  10. Не, у меня свой softcore проц (MIPS-совместимый) в циклоне от альтеры. В будущем это будет больше чем просто плеер + радио. Пока надо с сетью разобраться.
  11. Привет всем! Я в свободное время занимаюсь разработкой MP3/OGG/и.т.д-плеера + WEB-радио. Работа с SD-картами и с VS1003 уже закончена. Всё играет как надо. Теперь дело за Ethernet для WEB-радио. У меня есть 3 платы: * ENC28J60 (самопал) * ENC424J600 (тоже моих рук) * W5100 (из китая) Я пока ещё не решил какой чип будет в законченном девайсе, но думал о ENC424J600. Проблема в том, что я с Ethernet вообще ещё дела не имел. Ну пробовал несколько готовых примеров для ENC28J60 запускать и всё. Посмотрел даташит на ENC424J600. Дремучий лес! В исходниках TCP/IP стёка от Microchip есть поддержка ENC424J600, но там тоже ничего не понятно. Короче, мне нужно осваивать всё с нуля. Может у кого есть простенькие примеры для этого чипа? Чего почитать посоветуете тому, кто вообще не в теме? С уважением Дима
  12. Привет всем, с некоторых пор я начас своё знакомство с SoftCore "Plasma" (MIPS1) и сваял для Altera DE1 небольшой тестовый проект, который включает в себя собственно сам процессор, UART, 2 таймера, SD-Card по SPI и кнопки/светодиоды. Память - 8мб SDRAM. Процессор тикает на частоте 12.85МГц, память на 90МГц. Пока нет никакого кэша. Раньше я использовал сборку GCC от Steve Rhoads. Но эта сборка не имеет никаких библиотек, поэтому всё приходилось писать самому. Поэтому я решил собрать GCC + Newlib. Собирал под Win32 (MinGW). Binutils 2.22 GCC 4.6.2 Newlib 1.20 GDB 7.4 Кое как получилось собрать Даже вроде заработало, но только проблемы с printf. Вот мой start-up code: .text .align 2 .global _start .ent _start _start: .set noreorder la $gp, _gp #initialize global pointer la $5, __bss_start #$5 = .sbss_start la $4, _end #$2 = .bss_end la $sp, 0x7FFFF #initialize stack pointer $BSS_CLEAR: sw $0, 0($5) slt $3, $5, $4 bnez $3, $BSS_CLEAR addiu $5, $5, 4 jal main nop loop: j loop .set reorder .end _start Скрипт LD: ENTRY(_start) SECTIONS { . = 0x00000000; .text : { boot.o (.text) *(.text) } .data : { *(.data) } _gp = . + 0x7ff0; __bss_start = .; .bss : { *(.bss) } _end = .; } Syscalls: #include <sys/stat.h> #define _MR(A) (*(volatile unsigned int*)(A)) #define _MW(A,V) *(volatile unsigned int*)(A)=(V) int fstat(int file, struct stat *st) { st->st_mode = S_IFCHR; return 0; } int read(int file, char *ptr, int len) { return 0; } int lseek(int file, int ptr, int dir) { return 0; } int isatty(int file) { return 1; } int close(int file) { return -1; } int write(int file, char *ptr, int len) { int todo; for (todo = 0; todo < len; todo++) { while(_MR(0x80000030)); // UART busy??? _MW(0x80000020, *ptr++); // write to UART } return len; } caddr_t sbrk(int incr) { extern char _end; /* Defined by the linker */ static char *heap_end; char *prev_heap_end; if (heap_end == 0) { heap_end = &_end; } prev_heap_end = heap_end; heap_end += incr; return (caddr_t) prev_heap_end; } Программа: #include <stdio.h> int main(void) { write(NULL,fff,3); printf("Hallo\n"); while(1); } Прямой вызов write работает как надо, а вот printf нет. Скорее всего, я думаю, у меня проблемы с heap/stack но так как опыта почти нет (всегда пользовался готовыми скриптами и start-up) то я завис. Почитал всё что смог найти в инете, но дальше дело не двигается. Надеюсь на помощь знающих! С уважением Дима
  13. Спасибо! Попробую переразвести эти дороги. Дизайн пока не собирал под эту плату. Есть несколько, которые я буду портировать со спартана3. Про ограничения выходов не знал, я с альтерой работал только с готовыми платами (DE1, DE2, NanoBoard 3000), а своё делал на третьем спартане. У xilinx я таких проблем не встречал. Попробую собрать проект!
  14. На плате будет установлен один кварц на 50МГц, второй резервный на случай какой нибудь нужной частоты. SDRAM будет тактоваться до 133MHz, SRAM мне надо до 20-15нс доступ. Остальная периферия через гребёнку до 100MHz, в основном медленнее. AC97/VGA/PIC32 через SPI Третий пункт не совсем я понял. заргузочный флэш мне не нужен, прошивку будет заливать PIC32. Так с самого начала было задумано. RS232 и прочее будет на плате, куда эта будет "втыкаться" 1. Да, я в даташите читал про это, но уже на паре плат видел и 3.3В, поэтому подумал что можно и так. У меня самодельный USB Blaster на PIC18F14K50 и он только 3.3В может 2. Питание каждого из 4 PLL через бусинку сделать?