Корзина

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

Курсы Валют

Курсы Валют  Дата ЦБ
Нал.USD
16.02 66.70
Нал.EUR
16.02 75.25
Нал.CNY
16.02 98.39

Оплата

visa

Реклама

Sape.ru Статьи

Блог

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

Перевод

Вход

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

Время

Sape.ru Ссылки

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

Алиса это умеет

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