module wsdrv( input clk,rst,
input en,
input [23:0] clr,
input fn,
output wire data, rd
);
parameter wait_time = 2510;
parameter TP = 62;
parameter T0H = 15;
parameter T1H = 45;
reg dat;
assign data = dat;
reg [23:0] clr_reg;
reg rdr;
reg [4:0] ccn;
reg [7:0] bcn;
reg [15:0] fncn;
assign fl = bcn==TP-1;
assign fb = ccn==23&fl;
assign rd = rdr;
always@(posedge clk) begin
clr_reg <= en? {clr[0],clr[1],clr[2],clr[3],clr[4],clr[5],clr[6],clr[7],clr[16],clr[17],clr[18],clr[19],clr[20],clr[21],clr[22],clr[23],clr[8],clr[9],clr[10],clr[11],clr[12],clr[13],clr[14],clr[15]}: clr_reg;
ccn <= rst? 0: en? 0: fb? 0: fl? ccn+1: ccn;
bcn <= rst? 0: en? 0: fl? 0: bcn+1;
fncn <= rst? wait_time: fn? 0: fncn==wait_time? fncn: fncn+1;
dat <= rst? 0: fncn!=wait_time? 0: clr_reg[ccn]&bcn<T1H? 1: clr_reg[ccn]&bcn>=T1H? 0: !clr_reg[ccn]&bcn<T0H? 1: !clr_reg[ccn]&bcn>=T0H? 0: 0;
rdr <= (fncn==wait_time&ccn==23&bcn==TP-4)|(fncn==wait_time-1);
end
endmodule
+47 |
2530
89
|
+23 |
1969
52
|
+169 |
4019
48
|
+25 |
2008
26
|
Конечно!
Осциллограф будем собирать?
И хреново что шаг 2мм, а не 2.54 =(
Выложил кусок кода похожего на драйвер, а весь проект могу скинуть по запросу, т.к. всякие облачные хранилища мне кажется забанят ссылку.
Для тру адептов K&R, конечно ужоснах, зато стильно, модно, молодежно… По цене аэробуса, но кого это останавливало?
И вопрос более по существу: там в окрестностях Altera и Actel не пробегали?
Actel лежит скучает, но тут код вроде бы универсальный на всём запустится. Что вас по нему интересует?
Подскажите пожалуйста, нужно управлять 12-ю линейками по 800 пикселей. Стоит ли брать для этих целей данную плату, нужно не только цветом но и яркостью управлять. Ардуино с яркостью на 800 пикселей не может справиться, скорости не хватает.
Откуда и как планируете передавать данные о цвете пикселей?
Я ещё раз уточню, через какой интерфейс ПЛИС примет 800*24*12*10=2,3Мбит/с?
Ну тут есть 20 аппаратных умножителей, они запросто перемножат ваши данные на нужную величину изменения яркости, единственное тут не хватит памяти, чтобы сделать буфер на 12 целых кадров по 800блоков, но оно наверное и не нужно, главное параллельно потоку как-то сообщать/вычислять начало кадра.
Обычно делают связку — микроконтроллер читает и обрабатывает данные и по удобному ему высокоскоростному интерфейсу отдаёт на FPGA, которая уже работает с периферией в нужном периферии формате. Можно, конечно, сэмулировать контроллер прямо в FPGA (старшие модели это позволяют), но это из пушки по воробьям. А в вашем случае порекомендовал бы просто посмотреть на значительно более быстрые STM32.
Поэтому фраза звучит примерно как «ездить на велосипеде я не умею, поэтому я поехал за пивом на приходской щите». И пойми меня правильно. Я таким сравнением не осуждаю автора. Возможно в его случае это действительно быстрее и проще чем учиться держать равновесие на велосипеде. Но советовать такой путь всем я бы не стал.
Флешку предлагается использовать внешнюю. Просто у процессора логика фиксированная и ему можно послать команду и данные, а тут можно самому объединить нужную комбинацию логики.
Процессор выполняет задачи по строкам, шаг за шагом, а программируемая логика делает это сразу.
Допустим нужно обратотать сигнал от сотни датчиков одновременно, так вот процессору потребуется пройти от 1-го до 100-го за какое-то время которое ограничено тактовой частотой.
ПЛИС сделает это за один удар и выдаст на выходе нужный результат. Как будто вы построили огномную плату плату из логических элементов. Там ограничивающий фактор только быстродействие этих элементов.
Вобщем по этому в аппаратах УЗИ, радарах и прочих подобных вещах стоят ПЛИС и DSP а не самые мощные процессоры.
В следующий раз когда нужно будет вытаскивать в реальном времени пару сотен байт из 70-и мегабитного параллельного спутникового потока поставим мегу 328 ;)
Скажем возьмем МК, у тебя в МК скажем есть модуль CAN. Ты загружаешь в него данные, а дальше этот модуль сам занимается формированием импульсов на ногах МК, сам следит за правами доступа к шини, сам формирует и принимает пакеты и т д не отвлекая основную программу своими потребностями. Вобщем программирование ПЛИС как раз и строится из того, что описывается устройство таких модулей. Причем эти модули могут работать полностью параллельно.
Для ПЛИС тоже есть графические генераторы…
Параметры не настраиваемые.
Шаг у гребенки 2мм или 2,54?
Даташит на семейство тут, если подскажете какие примерно возможности вас интересуют, могу попробовать прикинуть.
Про шаг писал, что 2мм, у «материнки» возможно 2,5. Есть плата с 6м спартаном, там 2,54 мм шаг.
Дешевле МК научиться программировать…
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.