Важная информация

User Tag List

Страница 129 из 191 ПерваяПервая ... 125126127128129130131132133 ... ПоследняяПоследняя
Показано с 1,281 по 1,290 из 1901

Тема: ПЛИС и всё что с ними связано

  1. #1281
    Veteran
    Регистрация
    03.07.2007
    Адрес
    Мариуполь-Киев
    Сообщений
    1,112
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alm604 Посмотреть сообщение
    У товарища есть PCIE карта 1LPT 2COM. Попробую поставить на комп (Win8) и прошить проводками. Я просто не уверен, что там нормальный LPT.
    Под win7/8/10 и со встроенным LPT весьма проблемно работать, не то что с дополнительным контроллером...

    Скрытый текст


    Profi 6.2 Rev.B / 1024
    Profi v5.02 /1024/палитра/FDD3,5"/FDD5,25"/HDD130/XT-Keyb/Covox
    Profi v4.00 /1024
    АТМ Turbo /512/ - собран но еще не запускался
    ATM Turbo 2+ v7.10 - собран на 80%
    Pentagon 128 - в планах восстановить (раскуроченная плата)
    ZXMC20/NemoIDE/AT-Keyb (by Caro)
    Revers U8EP3C
    Speccy2010, r2
    [свернуть]

  2. #1282
    Member
    Регистрация
    18.01.2016
    Адрес
    г. Москва
    Сообщений
    127
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Работаю с ПЛИСами Xilinx XC2C64A, постоянно. В месяц приходится прошивать по 30 штук. Покупал для этих целей китайские программаторы, от USB. Первый купил, года 3 назад, за 5 тыс. с копейками - он сгорел. Купил второй, тоже китайский, но уже подешевле и тоже сгорел. Может мне просто так везло, что они горели. До этого использовал самодельный, по схеме от Xilinx, от LPT порта. И сейчас им пользуюсь и никаких проблем нет. Поставил себе второй комп с Вин_ХР и установил ISE WebPACK 14.7, но не полностью, а только iMPACT для прошивки ПЛИС. Так как комп для прошивки слабый, то весь проект делаю на другом, более мощном компе, а файлы для прошивки переношу через флешку. Может не очень удобно, но зато никаких проблем с прошивкой нет. Да и второй комп с Вин_ХР удобно использовать для прошивки ПЗУ УФ, да и для других целей, где нужен LPT или для старого софта.
    Опять же, если сравнивать по производительности, на старом компе с ХР, сборка проекта может идти 2-3 часа и больше (дальше не проверял, останавливал, терпения не хватало), а на мощном компе сборка идет от 2 мин и до 40 мин, в зависимости от схемы и сможет ли ПЛИС "проглотить" эту схему.
    Для прошивки использую вот такой разъем https://youtu.be/mGUD3MEP1JM иголки с пружинами, скорее всего их используют для электротеста печатных плат, тоже покупал на Али.

  3. #1283
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Оживлю немного темку))).

    Всем известно, что для CPLD нужен генератор и хорошо, если Вы страдаете плюшкинизмом и у Вас их как у дедушки с гуталиновой фабрики.
    А если нет?
    Да ещё и на какую-нибудь "экзотическую" частоту?
    А кварцы - вот они...
    Предлагаю ещё один вариант генератора без генератора. Схема проста - 1 инвертор и несколько пассивных резисторов/конденсаторов и собственно сам кварц.
    В случае кварца с параллельным резонансом (в основном импортные кварцы) частота подбирается конденсаторами С1 и С2, а в случае отечественного кварца с ним последовательно включается дополнительный конденсатор(на схеме не показан).
    Возможно в сложных схемах заработает не сразу и придётся править констрейты чтоб разместить элемент поближе к IO, но в тесте Квартус написал 300+ МГц...
    Реально больше 25МГц не проверял.
    Верилог код:
    Код:
    module osc
    (
    // Секция генератора
    	input        wire    in_clk,
    	output      wire    out_clk,
    );
    /* Собственно генератор */
    assign out_clk = ~in_clk;
    endmodule
    Осталось выход подключить на тактовый вход ПЛИС.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	OSC_shematic.jpg 
Просмотров:	122 
Размер:	33.8 Кб 
ID:	59257  

  4. #1284
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,404
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    omercury, часто пользовался замкнутым инвертором. На Arria2GX он дает почти 1ГГц, но эта частота не юзабельна. Ее надо поделить на 2 ближним триггером, и уже можно подавать на счетчик-делить дальше. Иначе схема не успевает. На CycloneV частота получалась порядка 400-450МГц. Но, эта частота не стабильна. Она плывет в зависимости от изменений в проекте. Она сильно плывет во время работы (от нагрева, помех и фазы луны). Так что все равно я не рекомендую так делать. Лучше попытаться вывести инвертор наружу и подвесить кварц, как это сделано у тех же АТМег.

  5. #1285
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дело было вечером, делать было нечего... (с)

    Проглядывал тематические форумы и в очередной раз наткнулся на тему 28МГц для спекки.
    Многие рекомендуют использовать PLL от старой материнки, но вот беда - не у всех они есть.
    Можно конечно купить, но это явно не наш метод.
    Итак:

    28МГЦ?
    Легко!

    За основу взят классический ГУН.
    Можно конечно собрать и на рассыпухе, но на дворе 21 век всё-таки. Заюзаем мелкую CPLD, а также генератор из предыдущего поста.
    Кварц попался на 7,2МГц (лучше использовать "круглые" частоты, делители получатся проще), значит для "неизменно превосходного результата" нам нужно поделить опорную частоту на 9 и умножить на 35 - 7,2/9*35=28.
    Собственно схема во вложении, пояснения в Верилог-коде, результат на фотке.

    По факту получилось 7200122ГЦ, что в результате должно дать 7200122/9*35=28000474,44Гц.

    Следует уточнить, что ГУН требует подбора конденсаторов/резисторов. Методика проста: с подключенным к питанию левым выводом R1 частота ГУН должна быть выше требуемой на 20-30%, с неподключенным R1 частота должна быть немного ниже требуемой, с заземлённым левым выводом - у меня вообще генерация срывается. Кстати у на моей макетке хватило ёмкости входов и монтажа, вместо конденсаторов напаян кусочек фольгированного текстолита ~2х3мм с надрезанной с одной стороны фольгой.
    Таким образом делал генератор чуть выше 60МГЦ, для дальнейшего увеличения частоты на контакт, подписанный на схеме "3v3" надо подать ещё более высокое напряжение, ускорив тем самым заряд конденсаторов C1 и С2.

    Код:
    module PLL_28
    (
    // Секция генератора
    	input	wire		in_clk,
    	output	wire		out_clk,
    // Секция PLL
    	inout	wire	in1,			//RC-цепь 1
    	inout	wire	in2,			//RC-цепь 2
    	output	wire	out,			//Выход	PLL			(28.00MHz)
    	output	wire	error			//Выход ошибки
    );
    // Секция генератора
    //*********************************************
    wire clk = out_clk;
    /* Собственно генератор */
    assign out_clk = ~in_clk;
    //*********************************************
    // Секция PLL
    // ============================================================
    parameter mul = 35;	// Для 12MHz - 7
    parameter div = 9;	// Для 12MHz - 3
    parameter wmul = $clog2(mul);			//Ширина счётчика умножителя, вычисляемое
    parameter wdiv = $clog2(div);			//Ширина счётчика делителя, вычисляемое
    // ============================================================
    wire			di1;			//Внутренняя шина генератора прям
    wire			di2;			//Внутренняя шина генератора инв
    // ============================================================
    assign	out		=	di1;			//Подключаем выход
    	//Организуем диоды, закрытые на заряд, и открытые на разряд
    assign in1 =	(di1) ? 1'bZ : di1;
    assign in2 =	(di2) ? 1'bZ : di2;
    	//Собственно генератор
    assign di1 = ~((in1) | (di2));
    assign di2 = ~((in2) | (di1));
    // ============================================================
    //Делитель тактовой (делитель)
    // ============================================================
    reg[wdiv - 1:0] 	kDiv_ref = 0;		//Делитель тактовой
    always @(posedge clk) begin
    	kDiv_ref <= kDiv_ref + 1; //increment cnt
    	if (kDiv_ref == (div - 1)) begin		//2//12МГц/3/2=2,0MHz
    		kDiv_ref <=0;
    	end
    end		//always
    // ============================================================
    //Делитель частоты генератора PLL (умножитель)
    // ============================================================
    reg[wmul - 1:0] 	kDiv_osc = 0;
    always @(posedge di1) begin
    	kDiv_osc <= kDiv_osc + 1; //increment cnt
    	if (kDiv_osc == (mul - 1)) begin		//6//28.00МГц/7/2=2,0MHz
    		kDiv_osc <=0;
    	end
    end		//always
    // ============================================================
    // Делители на 2 (получаем меандр)
    // ============================================================
    reg rf = 0;
    always @(posedge kDiv_ref[wdiv - 1]) begin	// Делим пополам
    	rf <= ~rf;
    end
    // ============================================================
    reg of = 0;
    always @(posedge kDiv_osc[wmul - 1]) begin	// Делим пополам
    	of <= ~of;
    end
    // ============================================================
    assign error = ~(rf ^ of);
    //assign error = 1'b1;		// max 36MHz / 43
    //assign error = 1'bz;		// mid 24MHz / 34
    //assign error = 1'b0;		// min 0MHz  / 0
    // ============================================================
    
    endmodule
    //*********************************************
    - - - Добавлено - - -

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Лучше попытаться вывести инвертор наружу и подвесить кварц, как это сделано у тех же АТМег.
    Дык так оно и сделано... на следующей фотке.
    Нестабилизированные кварцем генераторы конечно же непредсказуемы))).

    - - - Добавлено - - -

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    На Arria2GX он дает почти 1ГГц, но эта частота не юзабельна.
    Кстати, PLL EP2C5 со спидгрейдом 8 даёт вполне юзабельные полгигагерца.

    P.S.
    Немного параметризовал счётчики и убрал пару лишних регистров.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	C2_PLL-500MHz.jpg 
Просмотров:	177 
Размер:	23.8 Кб 
ID:	59260   Нажмите на изображение для увеличения. 

Название:	OSC_28.jpg 
Просмотров:	184 
Размер:	26.6 Кб 
ID:	59259   Нажмите на изображение для увеличения. 

Название:	PLL_shematic.jpg 
Просмотров:	197 
Размер:	52.8 Кб 
ID:	59258  
    Последний раз редактировалось omercury; 05.01.2017 в 15:48.

  6. #1286
    Member
    Регистрация
    03.04.2012
    Адрес
    г. Тюмень
    Сообщений
    51
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alm604 Посмотреть сообщение
    Есть спартан XCS20XL, 3 штуки XCV100
    Теперь есть и программатор для Xilinx!)))
    Получилось у меня прошить XC9536, XC9536XL. Не получилось несколько XC9536 - пишет, что они "unsupported". Порылся в гугле и понял, что они либо очень старые, либо заказные. Жаль. Теперь вопрос про спартана и виртекса. Есть ли здесь люди, которые работали с этими сериями? Вопрос вот в чем: эти FPGA не на флеше, значит их можно прошивать бесконечное число раз. Это очень хорошо для опытов. С другой стороны, они заливают конфигурацию из внешней флешки, которая имеет ограниченные ресурсы. Уже хуже. Далее я не нашел про второй спартан информации о типе внешней флешки, кроме стандартных Xilinx, которые опять ждать из Китая, т.к. поблизости нет. Возможно ли кабелем непосредственно из IMPACT сконфигурить FPGA? На третий спартан, как я видел, Атмеловскую SPI Flash цепляют. Про Virtex вообще мало информации( Я понимаю, что это старье, но у меня еще и 16V8 во всю трудятся.
    В общем, подскажите, если не трудно, как мне этих монстров попробовать запустить. Может быть внешний МК с памятью, SD картой или еще как. Всё, что находил было про третий спартан и шестой.

  7. #1287
    Master
    Регистрация
    27.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    828
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    128
    Поблагодарили
    108 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alm604 Посмотреть сообщение
    Теперь есть и программатор для Xilinx!)))
    1) Практически все фпга имеют внешнюю ппзу для загрузки (справедливо как минимум со 2 по 7 семейство). исключение спартан-3А (те что с буквой А имеют внутри ппзу)
    2) саму фпга можно загружать бесконечное число раз по jtag-интерфейсу (фпга - по сути озу в данном вопросе)
    3) начиная с какого-то семейства тип внешней ппзу может быть spi/bpi/(и др. виды). для "старых" в основном только фирменные ппзу (достаточно дорогие по сравнению с spi)
    4) насколь я помню спартан-3 (примерно) это последнее семейство которое не "взрывалось" от подачи 5в на выводы.
    импактом можно прошить любую фпга и (или) ппзу из числа поддерживаемых.
    5) есть семейства по названию - спартан, кинтекс, вёртекс. внутри семейств есть нумерация. к примеру спартан-3 и спартан-6 и спартан-7. вёртекс-2 -5 -7.
    вёртексы "круче" чем спартаны. а -7 круче -3.
    6) поскольку различные фпга сняты с производства то и поддержка в ise-vivade тоже сворачивается. к примеру в исе14.7 нет точно спартана-2. все современные фпга только в виваде.
    7) любую фпга можно "загрузить" внешним МК при наличии у фпга режима загрузки через spi или параллельный интерфейс (как пример). SD насколь я помню "популярна" у современных фпга (ни разу не практиковал - без нужды).
    по хорошему что 3 что 6 что 7 итд все фпга практически одинаковы с точки зрения загрузки.

    - - - Добавлено - - -

    все можно найти на офф. сайте.

  8. #1288
    Master
    Регистрация
    20.06.2014
    Адрес
    г. Орск, Оренбургская обл.
    Сообщений
    778
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    62
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Комрады! Поясните, пожалуйста, бестолковому...
    Есть код модуля, нормально компиллируется в составе проекта.

    Скрытый текст

    Код:
    module HVSync (
      input wire PixClock,
      output reg HSync,
      output reg VSync,
      output reg [2:0] R,
      output reg [2:0] G,
      output reg [2:0] B);
     
      parameter HVA = 1024;		// Visible Area
      parameter HFP = 24;		// Front Porch
      parameter HST = 136;		// Sync Time
      parameter HBP = 160;		// Back Porch
     
      parameter VVA = 768;		// Visible Area
      parameter VFP = 3;			// Front Porch
      parameter VST = 6;			// Sync Time
      parameter VBP = 29;		// Back Porch
    
      //variables  
      reg [10:0] PC = 0;			// Pixel Counter (Column, X)
      reg  [9:0] LC = 0;			// Line Counter (Row, Y)
    
      reg VA;						// Visible Area on screen
    
    always @(posedge PixClock)
    begin
      VA <= ((PC < HVA) | (PC == HVA+HFP+HST+HBP-1)) & ((LC < VVA) | (LC == VVA+VFP+VST+VBP-1));
    
      HSync <= (PC >= HVA+HFP-1) & (PC < HVA+HFP+HST-1);
     
      if (PC < (HVA+HFP+HST+HBP-1))
        PC <= PC + 1'b1;
      else begin
        PC <= 0;
    	 VSync <= (LC >= VVA+VFP-1) & (LC < VVA+VFP+VST-1);
    	 if (LC < (VVA+VFP+VST+VBP-1))
    	   LC <= LC + 1'b1;
    	 else
    	   LC <= 0;
      end
    end
    
    
    // Color Image
     
    always @(posedge PixClock)
    begin
      if (VA)
      begin
    	 if  ((PC[7:0]==0) | (PC[7:0]==255) | (LC[7:0]==0) | (LC[7:0]==255))
    	 begin
    		R <= 7;
    		G <= 7;
    		B <= 7;
    	 end
    	 else begin
    	   if (LC[7:6]==0)
    		begin
    		  R <= ~PC[9:7];
    		  G <= 0;
    		  B <= 0;
    		end
    	   if (LC[7:6]==1)
    		begin
    		  R <= 0;
    		  G <= PC[8:6];
    		  B <= 0;
    		end
    	   if (LC[7:6]==2)
    		begin
    		  R <= 0;
    		  G <= 0;
    		  B <= ~PC[7:5];
    		end
    	   if (LC[7:6]==3)
    		begin
    		  R <= PC[6:4];
    		  G <= PC[6:4];
    		  B <= PC[6:4];
    		end
    		end
      end
      else begin
    	 R <= 0;
    	 G <= 0;
    	 B <= 0;
      end
    end
    
    endmodule
    [свернуть]

    Выношу отдельно проверку ~VA.

    Скрытый текст

    Код:
    module HVSync (
      input wire PixClock,
      output reg HSync,
      output reg VSync,
      output reg [2:0] R,
      output reg [2:0] G,
      output reg [2:0] B);
     
      parameter HVA = 1024;		// Visible Area
      parameter HFP = 24;		// Front Porch
      parameter HST = 136;		// Sync Time
      parameter HBP = 160;		// Back Porch
     
      parameter VVA = 768;		// Visible Area
      parameter VFP = 3;			// Front Porch
      parameter VST = 6;			// Sync Time
      parameter VBP = 29;		// Back Porch
    
      //variables  
      reg [10:0] PC = 0;			// Pixel Counter (Column, X)
      reg  [9:0] LC = 0;			// Line Counter (Row, Y)
    
      reg VA;						// Visible Area on screen
    
    always @(posedge PixClock)
    begin
      VA <= ((PC < HVA) | (PC == HVA+HFP+HST+HBP-1)) & ((LC < VVA) | (LC == VVA+VFP+VST+VBP-1));
    
      HSync <= (PC >= HVA+HFP-1) & (PC < HVA+HFP+HST-1);
     
      if (PC < (HVA+HFP+HST+HBP-1))
        PC <= PC + 1'b1;
      else begin
        PC <= 0;
    	 VSync <= (LC >= VVA+VFP-1) & (LC < VVA+VFP+VST-1);
    	 if (LC < (VVA+VFP+VST+VBP-1))
    	   LC <= LC + 1'b1;
    	 else
    	   LC <= 0;
      end
    end
    
    
    // Blanking
    always @(posedge PixClock)
    begin
      if (~VA)
      begin
    	 R <= 0;
    	 G <= 0;
    	 B <= 0;
      end
    end
    
    
    // Color Image
     
    always @(posedge PixClock)
    begin
      if (VA)
      begin
    	 if  ((PC[7:0]==0) | (PC[7:0]==255) | (LC[7:0]==0) | (LC[7:0]==255))
    	 begin
    		R <= 7;
    		G <= 7;
    		B <= 7;
    	 end
    	 else begin
    	   if (LC[7:6]==0)
    		begin
    		  R <= ~PC[9:7];
    		  G <= 0;
    		  B <= 0;
    		end
    	   if (LC[7:6]==1)
    		begin
    		  R <= 0;
    		  G <= PC[8:6];
    		  B <= 0;
    		end
    	   if (LC[7:6]==2)
    		begin
    		  R <= 0;
    		  G <= 0;
    		  B <= ~PC[7:5];
    		end
    	   if (LC[7:6]==3)
    		begin
    		  R <= PC[6:4];
    		  G <= PC[6:4];
    		  B <= PC[6:4];
    		end
    		end
      end
    end
    
    endmodule
    [свернуть]

    Посыпались ошибки - https://yadi.sk/i/83kyjVf_3GZ5f5
    Ругается на заголовки описания событий (60 и 47 строки). Не вкуриваю...
    Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

  9. #1289
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,404
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как ты умудрился работать с одним регистром в разных always блоках?

  10. #1290
    Master
    Регистрация
    20.06.2014
    Адрес
    г. Орск, Оренбургская обл.
    Сообщений
    778
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    62
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я новичок в Verilog, еще учусь.
    HardWareMan, дай более развертнутый ответ/подсказку, пожалуйста.
    Последний раз редактировалось LeoN65816; 02.04.2017 в 11:57.
    Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

Страница 129 из 191 ПерваяПервая ... 125126127128129130131132133 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ДВК (и всё, что с ними связано)
    от Grand в разделе ДВК, УКНЦ
    Ответов: 4534
    Последнее: 04.04.2024, 23:32
  2. Ответов: 1187
    Последнее: 22.12.2023, 20:53
  3. PAL/GAL и все что с ними связано.
    от Mick в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 487
    Последнее: 01.12.2023, 00:30
  4. SMUC на дискретах и ПЛИС
    от spensor в разделе Scorpion
    Ответов: 844
    Последнее: 15.05.2023, 12:31
  5. Вопрос по ПЛИС
    от Zloy в разделе Несортированное железо
    Ответов: 23
    Последнее: 17.10.2015, 17:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •