Dlinyj (dlinyj) wrote,
Dlinyj
dlinyj

Category:

Первое знакомство с ПЛИС.

ПЛИС (программируемая логическая интегральная схема) - это самое лучше, что могли изобрести на логике. Лучше всего про плис скажут на ВИКИПЕДИИ . Итак, ещё на прошлом СС я прзнакомился с культовой личностью - со SVO, который тогда сделал игру Понг на ПЛИС Тогда я ему намекнул, что хотел бы их изучать, но тогда так и не дошли руки. Год спустя, на этом СС SVO, как справедливо заметил f_andrey в коментах, сделал ещё эмулятор компьютера "Вектор-06Ц" http://code.google.com/p/vector06cc/. В этот раз я уже более конкретно сказал, что мне нехватает хорошего учителя, и мы уже более плотно обменялись контактами, и он мне прислал платку:


Чудо платка, с Altera MAX II (извиняюсь, за качество фотки)


Подробнее про платку можно поглядеть на официальном сайте: http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=39&No=215 (там и фотка лучшего качества). У платки есть только один недостаток - количество перепрошивок ограничено 100 (!!!!!) штуками. Это ОоооооооООооочень мало!!! (Даже я, который мало программирует, умудрился израсходовать ресурс EEPROM за день отладки, с 1000 циклами перезаписи!). В общем, сегодня интерактивно, по скайпу обучался программированию ПЛИС! В результате написали на VHDL простейший бегущий огонь:


Видео бегущего огонька


module new_very_log (CLOCK_50, KEY, LED);
input CLOCK_50;
input [3:0] KEY;
output reg [7:0] LED; //регистр светодиодов
reg [24:0] divctr; //регистр счётчик на 24 бит
wire reset_n = KEY[0];
wire led_ce = divctr[23:0] == 0;// Принимает значение истина, в остальное время ложь

always @(posedge CLOCK_50) begin
divctr <= divctr + 1'b1;
end

always @(posedge CLOCK_50) begin
if (~reset_n)
LED <= 'b1;
else
if (led_ce) LED <= {LED[0], LED[7:1]};//Крутим битик, циклически по кругу.
end

endmodule


Изящно, неправда ли? На асме было бы значительно больше.


Самый смак ПЛИС, который вводит меня в благовенный трепет, и полностью рушит мозг у обычных программистов, это то, что всё исполняется ОДНОВРЕМЕННО!!!! Вот где максимальный реализм, и многопоточность обработки данных. А вы говорите много ядер, контроллеры с большей частотой. ПЛИС спасёт мир :).

З.Ы. Ютуб тупорылая овца, гугл видео - быстро и просто. Перелил.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 21 comments