Корзина

0 Товары - 0.00 RUB
В корзину

Курсы Валют

Курсы Валют  Дата ЦБ
Нал.USD
24.11 58.46
Нал.EUR
24.11 69.18
Нал.CNY
24.11 88.80

Оплата

visa

Реклама

Блог

Первый проект для VE-EP4CE10E. Часть 2.

Как и обещал рассказываю о создании тестового проекта, для проверки ПЛИС EP4CE10E. Для начала нам нужно установить среду разработки Altera QUARTUS II. Для этого переходим на сайт Altera по ссылке https://www.altera.com/downloads/download-center.html. Выбираем для скачивания Quartus II Web Edition. По правилам Altera скачивание возможно только после регистрации. В принципе ничего сложного там нет. Поэтому будем считать что Quartus II Вы скачали. Запускаем Quartus II:

 

15349b991b4671081a990c222f4b2a9d.jpg

Выбираем New Project Wizard.

99926d3089a66053465323b1f88d50eb.jpg

 

Жмем Next

4954487e957654bb4d8c2cb218d56237.jpg

Выбираем путь и имя нашего проекта. У меня это "H:\projects\prj_fpga_altera\prj_VE-EP4CE10E\EP4CE10E\cyclone4_first" и "cyclone4_first" соответственно.

952c18ed41707329f6bd00ed48700a61.jpg

Выбираем Empty project.

9fd728f7a4298c54aa6b511c079f7d1b.jpg

Никаких файлов не добавляем.

e479cfd46ff9c99f34279566be731109.jpg

Выбираем тип кристалла установленный на нашей плате. А именно EP4CE1022I7.

813daf8bec99b89b835d1a181b0bc62e.jpg

В качестве языка симуляции выбираем Verilog HDL.

cb4b4460103cf599b6a0531c54e60a56.jpg

Общая сводка по созданному проекту.

61586d3ca1ff7cfa60a44bf4bc149039.jpg

Все! Можно делать первый проект :)

4d5ae2c533356fb02b3a659e0b2ce848.jpg

Выбираем пункт меню File->New. Создаем Block Diagram/Schematic File. Это будет наш основной, так называемый Top-Level Entity. Для того чтобы сделать наш файл основным, выбираем пункт меню Project->Set as Top-Level Entity.

8feeb0e5d9dc6b60ea16097c3e85dc7b.jpg

Через тот-же пункт меню создаем Verilog HDL File. Вставляем в этот файл следующий код:

Verilog Code:
  1. ///////////////////////////////////////////////////////////////
  2. //module which generates video sync impulses
  3. ///////////////////////////////////////////////////////////////
  4.  
  5. module hvsync (
  6. // inputs:
  7. input wire pixel_clock,
  8.  
  9. // outputs:
  10. output reg hsync,
  11. output reg vsync,
  12.  
  13. //high-color test video signal
  14. output reg [3:0]r,
  15. output reg [3:0]g,
  16. output reg [3:0]b
  17. );
  18.  
  19. // video signal parameters, default 1280x1024 75Hz (134955600 Hz pixelclock)
  20. parameter horz_front_porch = 16; //H Front Porch = 0.119; (usec) = 2 chars = 16 Pixels
  21. parameter horz_sync = 144; //Hor Sync Time = 1.067; (usec) = 18 chars = 144 Pixels
  22. parameter horz_back_porch = 248; //H Back Porch = 1.837; (usec) = 31 chars = 248 Pixels
  23. parameter horz_addr_time = 1280;
  24.  
  25. parameter vert_front_porch = 1; //V Front Porch = 0.013; (msec) = 1 lines
  26. parameter vert_sync = 3; //Ver Sync Time = 0.038; (msec) = 3 lines
  27. parameter vert_back_porch = 38; //V Back Porch = 0.475; (msec) = 38 lines
  28. parameter vert_addr_time = 1024;
  29. //variables
  30. reg [11:0]pixel_count = 0;
  31. reg [11:0]line_count = 0;
  32.  
  33. reg hvisible = 1'b0;
  34. reg vvisible = 1'b0;
  35.  
  36. //synchronous process
  37. always @(posedge pixel_clock) //горизонтальные синхроимпульсы
  38. begin
  39. hsync <= (pixel_count < horz_sync);
  40. hvisible <= (pixel_count >= (horz_sync+horz_back_porch)) &&
  41. (pixel_count < (horz_sync+horz_back_porch+horz_addr_time));
  42.  
  43. if(pixel_count < (horz_sync+horz_back_porch+horz_addr_time+horz_front_porch) )
  44. pixel_count <= pixel_count + 1'b1;
  45. else
  46. pixel_count <= 0;
  47. end
  48.  
  49. always @(posedge hsync) //вертикальные синхроимпульсы
  50. begin
  51. vsync <= (line_count < vert_sync);
  52. vvisible <= (line_count >= (vert_sync+vert_back_porch)) &&
  53. (line_count < (vert_sync+vert_back_porch+vert_addr_time));
  54.  
  55. if(line_count < (vert_sync+vert_back_porch+vert_addr_time+vert_front_porch) )
  56. line_count <= line_count + 1'b1;
  57. else
  58. line_count <= 0;
  59. end
  60.  
  61. wire visible; assign visible = hvisible & vvisible;
  62. wire rvisible; assign rvisible = pixel_count[6];
  63. wire gvisible; assign gvisible = pixel_count[7];
  64. wire bvisible; assign bvisible = pixel_count[8];
  65.  
  66. always @* //Генерация цветных полос
  67. begin
  68. if(visible & rvisible)
  69. r = pixel_count[5:2];
  70. else
  71. r = 0;
  72. if(visible & gvisible)
  73. g = pixel_count[5:2];
  74. else
  75. g = 0;
  76. if(visible & bvisible)
  77. b = pixel_count[5:2];
  78. else
  79. b = 0;
  80. end
  81.  
  82. endmodule

Параметры развертки взяты из файла DMTv1r11.pdf. Мой монитор имеет максимальное разрешение: 1280*1024 и частоту кадровой развертки: 75 Гц. Поэтому я выбираю данные константы развертки:

cd8579db1a2befd3398101f15af3da64.jpg

Далее нам нужно создать графическое представления нашего кода. Для этого выбираем пункт меню File->Create / Update->Create Symbol Files for Current Files. Далее создадим Привязку пинов чипа к именам, которые можно использовать в проекте. Для этого открываем Assigments->Assigment Editor, и вводим таблицу сопоставления:

0d51e98256e76fa1ea34a67699884525.jpg

Теперь создадим функцию синтезатора частоты. Дело в том, что на плате установлен кварц номиналом 50 МГц. А для формирования изображения 1280*1024*75 Гц нам потребуется частота, равная (1280+248+144+16)*(1024+38+3+1)*75. Итого 134955600 Гц. Приступим:

63a4450faa085f88729d9e6261ff90f7.jpg

В IP Catalog выбираем Library->Basic Functions->Clocks; PLLs and Reset->PLL->ALTPLL.

ea3a8ebfe1e1f47d6a5f32066b1ddbb5.jpg

Выбираем язык Verilog. Путь к создаваемому модулю "H:\projects\prj_fpga_altera\prj_VE-EP4CE10E\EP4CE10E\cyclone4_first\pll0". Нажимаем OK.

9c53a3768dcaf69ad0da422ecff8dff8.jpg

Выбираем частоту inclk0 равной 50 MHz. Нажимаем Next>.

1f34bdc8bf7a4e926e13608c03f88855.jpg

Отменяем создание дополнительных входов и выходов управления.

7d631b26fb39a38030bcd18b950689b4.jpg

Оставляем без изменений.

f4eec2369dfad29d14198c32f939c062.jpg

Второй вход ФАПЧ оставляем незадействованным.

c623f4864d0d7b09916293f8140e3945.jpg

Динамическая реконфигурация нам пока не нужна :)

cd540c8190b651f13ed7d9d0631a62d0.jpg

Вот мы и добрались до самой главной настройки. Для начала выбираем Enter output clock frequency. В поле Requested Settings вводим рассчитаную нами частоту: 134.955600. Далее нажимаем кнопку <<Copy. Quartus подобрал нам значения коэффициентов 27 и 10. Проверяем (50*27)/10=135 МГц. Нажимаем Next>>.

b2be716c07f5c6fe1c7193836a91fe14.jpg

Наимаем Next>>.

e807d0c5a516b824128be7b36d897609.jpg

Ставим галку в чикбоксе pll0.bsf Quartus II symbol file. Этим мы создадим символ нашего ФАПЧ.

c9032e49ddcae806941e30c71f165e86.jpg

Тут Quartus спрашивает необходимо ли добавить сгенерированный модуль в наш проект. Нажимаем Yes.

Приступаем к созданию нашей схемы. Выбираем вкладку с файлом схематического ввода, и с помощью панели инструментов:

78a8d497988916375c76f34bf268373f.jpg

Созаем схему:

7672711e04825aae25743aad234b8a02.jpg

Выбираем пункт меню Processing->Start Compilation. Если все сделанно правильно, мы увидим результат:

cdb9158bc2c865736695e08b3b9fdbc0.jpg

Осталось загрузить наш проект в отладочную плату VE-EP4CE10E! Выбираем Tools->Programmer:

af498eb765bc1785075ca354c6bbf46a.jpg

Добавляем наш файл "cyclone4_first\output_files\cyclone4_first.sof" с помощью кнопки Add File... Чтобы каждый раз не добавлять файл конфигурации ПЛИС, сохраним настройки: File->Save As... Выбираем имя файла "H:\projects\prj_fpga_altera\prj_VE-EP4CE10E\EP4CE10E\cyclone4_first\cyclone4_first.cdf". Нажимаем Сохранить. Подключаем Altera USB Blaster к разъему P2 нашей платы. Осталось нажать заветную кнопку Start! На подключенном VGA мониторе наблюдаем следующую картину:

6261cbd962421487e79fa144aa774ec3.jpg

Если немного изменить код генератора картинки:

Verilog Code:
  1. always @* //Генерация xor текстуры
  2. begin
  3. if (hvisible & vvisible)
  4. begin
  5. r = (pixel_count ^ line_count) >> 6;
  6. g = (pixel_count ^ line_count) >> 4;
  7. b = (pixel_count ^ line_count) >> 2;
  8. end
  9. else begin
  10. r = 0;
  11. g = 0;
  12. b = 0;
  13. end
  14. end

Можно получить забавную картинку:

051198edb009b7aa1b73a0503b937378.jpg

Файлы проекта: cyclone4_first.zip

Перевод

Вход

Или классический вход:

Время

Карта сайта Визуальная электроника