Корзина

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

Курсы Валют

Курсы Валют  Дата ЦБ
Нал.USD
05.12 66.45
Нал.EUR
05.12 75.66
Нал.CNY
05.12 97.09

Оплата

visa

Реклама

Статьи

Блог

New 2018 year gift!

Дорогие друзья, мы рады вступить в новый год вместе с вами! Позвольте поздравить вас с этим замечательным праздником, пожелать здоровья, успехов и благополучия вам и вашим семьям. Чтобы в новом году были новые победы и свершения, исполнялись самые заветные желания. А мы и впредь будем помогать вам идти к своим целям, отдавая лучшее, что у нас есть. Искренне ваша Визуальная электроника.

В качестве новогоднего проекты мы создадим новогоднюю картинку, переливающуюся всеми цветами радуги. Для начала изменим код нашего преобразователя bmp to mif из проекта Частотомер с VGA выходом. В монохромном bmp файле 1 байт содержит 8 точек изображения, что вполне логично. Поэтому добавляем еще один цикл, перебрающий биты в байте:

C++ Code:
  1. //Перебираем пиксели bmp файла
  2. for(unsigned int dy=0;dy<pic_height;dy++)
  3. {
  4. for(unsigned int dx=0;dx<pic_width/8;dx++)
  5. {
  6. for(unsigned char db=0;db<8;db++)
  7. {
  8. adr1=pic_width*dy+8*dx+db;
  9. adr2=pic_width*(pic_height-dy-1)/8+dx;
  10. Colour=(picture.data()[62+adr2] & 1<<(7-db))==0 ? 0:1;
  11. adr_str=QString::number(adr1);
  12. rgb_str=QString::number(Colour);
  13. mif.append(adr_str);
  14. mif.append(":");
  15. mif.append(rgb_str);
  16. mif.append(";\n");
  17. }
  18. }
  19. }

Запускаем наш конвертер:

pic1

Рис. 1: Преобразование bmp картинки в mif файл.

Далее создадим проект для нашей платы VE-EP4CE10E. Проект достаточно простой: модуль picture это память содержащая нашу картинку, модуль vga это генератор vga развертки. Ну и самое интересное это функция генератор радуги. Вот ее код:

Verilog Code:
  1. function [23:0] RGB;
  2. input [7:0] in_cnt;
  3.  
  4. reg [7:0] R_func;
  5. reg [7:0] G_func;
  6. reg [7:0] B_func;
  7.  
  8. begin
  9. if (in_cnt < 85)
  10. begin
  11. R_func=in_cnt * 3;
  12. G_func=255 - in_cnt * 3;
  13. B_func=0;
  14. RGB={R_func, G_func, B_func};
  15. end
  16. else if(in_cnt < 170)
  17. begin
  18. in_cnt = in_cnt-85;
  19. R_func=255-in_cnt * 3;
  20. G_func=0;
  21. B_func=in_cnt * 3;
  22. RGB={R_func, G_func, B_func};
  23. end
  24. else
  25. begin
  26. in_cnt = in_cnt-170;
  27. R_func=0;
  28. G_func=in_cnt * 3;
  29. B_func=255 - in_cnt *3;
  30. RGB={R_func, G_func, B_func};
  31. end
  32. end
  33. endfunction

Следующий участок кода содержит мультиплексор видеоданных, выводящий изображение только когда из паяти картинки читаются логические единицы. А также процесс выборки видеоэффекта:

Verilog Code:
  1. assign r=pic_on ? tst_RGB[23:20]:4'b0000;
  2. assign g=pic_on ? tst_RGB[15:12]:4'b0000;
  3. assign b=pic_on ? tst_RGB[7:4]:4'b0000;
  4.  
  5.  
  6. always @(negedge pclk) begin
  7. if(col0==1)
  8. begin
  9. rb_cnt1<=0;
  10. rb_cnt2<=rb_cnt2 + 1'b1;
  11. end
  12. else
  13. begin
  14. rb_cnt1<=rb_cnt1 + 1'b1;
  15. end
  16.  
  17. case(rb_cnt2[16:15])
  18. 0 : tst_RGB<=RGB(rb_cnt1 - rb_cnt2);
  19. 1 : tst_RGB<=RGB(rb_cnt1 + rb_cnt2);
  20. 2 : tst_RGB<=RGB(rb_cnt1 ^ rb_cnt2);
  21. 3 : tst_RGB<=RGB(rb_cnt2);
  22. default : tst_RGB<=RGB(rb_cnt1 - rb_cnt2);
  23. endcase

Видео работы нашей демки:

Проект новогоднего поздравления для платы VE-EP4CE10E: new_year_gift.zip

Перевод

Вход

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

Время

Ссылки

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


Пользуясь настоящим веб-сайтом, вы даете свое согласие на использование файлов cookies.
Подробнее. Ok