Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Чт ноя 07, 2013 17:09:49

ПЛИС - epm240 распаяная в микромодуле. Перед первым пуском плисины плату тщательно проверял на правильность.
Дело в том, что это второй раз в жизни прошивал плис, и эта тема (как и сама технология) пока для меня является тёмным лесом полным загадок.

Книжки читал, первый раз прошивал по инструкции, как и сам код писал. Так же как и по инструкции назначал всякие пины (в квартусе). Но в инструкции ни слова как повторно перепрошивать. Стирать его или нет??? и как стирать память. или он автоматом память очищает перед новой прошивкой.

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Чт ноя 07, 2013 19:39:02

Ну что ж, теперь хоть производителя узнали - Altera. Теперь надо выяснить, что ты под фразой "прошить ПЛИС" подразумеваешь? Ты флеш память программируешь или просто конфигурируешь саму ПЛИС?

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Чт ноя 07, 2013 19:40:29

А.. прошу прощения... всё ясно. Надо покумекать... Вообще, здесь несколько может быть вариантов. Но перво наперво в Pin Planner посмотри, точно ли ноги назначены. Эт раз. Во вторых было и у меня нечто похожее... Приведи кусок кода тех сигналов, которые не на своих ногах. И ещё какая частота рабочая? Мне честно говоря с алтеровскими CPLD особо не приходилось ковыряться, но уверен, что принцип тот же что и при прошивки флешки. Её можно как стереть, так и запрограммировать. Естественно, перед тем как туда новую прошивку положить, её желательно отчистить.

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Пт ноя 08, 2013 16:08:56

Стер память, потом снова залил прошивку. Все равно както не адыкватно работает.
1-Сигнал bclk не проходит через плис. В нутри плис этот сигнал присутствует, так как без него сплитер не работал, и данные дата не инвертировал бы. Его просто нет на выходе. пин41 и пин55.
2- reset_out неправильно работает. На левом канале (пин38) ресет правильно отображается (+3.3 вольта), а на правом канале (пин50) его нет.

Частоты: mclk: 23 - 25 мгц; bclk: 3 - 12 мгц; data - и есть data.

Основное тело программы:
Изображение
сплитер:
Изображение

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Пт ноя 08, 2013 19:41:46

Я к сожалению не спец по разработке проектов для ПЛИС в схемотехническом редакторе, но по поводу bclk_in, первое что бросается в глаза два не один за другим. Это будит оптимизировано. В остальном, честно говоря не понятно. \оптимизатор может выбрасывать лишнюю логику, но если сигнал выведен на внешнюю ногу то он теряться не должен. А MCLK на выходе присутствует? И ещё, всё ли в порядке с микросхемой? Возможно стоит создать совсем простенький проектик (рабочий на 100% например мигалку) и подключить сигналы с него к данным ножкам. И ещё с BCLK_Q - это ведь фактически not(RESET). Если он в 0, то на выходе все нули (в т. ч. и BCLK_Q) т.е. выходной триггер сброшен (наверно). Если он 1 то выходной триггер работает, но BCLK_Q всёравно 0.

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Сб ноя 09, 2013 02:41:44

В корне все не верно. MCLK - тактовая частота ЦАП (25мгц). BCLK - опорная частота потока данных DATA. Все клоки присутствуют в ПЛИС, так как отсутствие клока BCLK в схеме приведет к не работоспособности всей программы.
Последние два Д-тригера 74574 - это реклок. Когда восходящие фронты сигналов выравниваются по времени. Вот почему то сигнал DATA проходит через него, а BCLK нет (хотя частота у них идентична).
Может сигнал утерян чуть раньше??? Квартус при компиляции на энергоэффективность вроде бы не ругался.
Вложения
I2S.rar
(346.07 KiB) Скачиваний: 493

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Сб ноя 09, 2013 09:07:37

Что мешает отладить? Выводите всё наружу и двигайтесь от входа до выхода и смотрите где косяк. А вообще лучше писать всё на языке #HDL, чем ковыряться в этих дебрях. Тут желание мало у кого есть в этом разбираться, если вообще у кого то есть. В симуляторе дебажили?

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Сб ноя 09, 2013 09:27:43

Я говорю про splitter. BCLK_Q на его выходе есть инвертированный RESET поступающий на его вход (по схеме). Не знаю что такое реклок, но у выходных триггеров reset это асинхронный сброс. Ну во всяком случае если это не какой нить хитрый триггер. Одновременно этот же ресет (не инвертированный) сбрасывает и выходные триггеры. А в целом, в соответствии с советом dimitriy91 старые версии кваруса (до 10) имеют встроенный симмулятор. Он и на #HDL и схемотическое описание проекта поддерживает. Не скажу про ModelSim, как он к схемотехнике относится....
P.S.
Verilog к сожалению не разумею(

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Сб ноя 09, 2013 11:05:48

И как раньше не замечал эту ошибку с неправильно подключенной bclk_q.
Осталось разобраться, почему квартус не любит на одну линию вешать несколько выводов. Ведь взять проект "Марсоход", там люди по нескольку штук объединяют в один мегопин. Значит можно.

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Сб ноя 09, 2013 11:34:25

Не только можно, но иногда даже нужно! Эти все ресеты - фактически перемычка от входного пина к 2-м выходным. Если бы сигналы использовались внутри ПЛИС то можно было бы списать всё на оптимизатора-озарника... но они выведены на физическую ножку и почему такая штука не фурычет, тем более что один из них работает :dont_know: Ещё раз внимательно посмотрите Assignment Editor или Pin Planner (что больше нравится). Возможно просто забыли ножку назначить и она в воздухе повисла... Если всё норм, на эту ногу другой какой нибуть сигнал выведите, не исключено что в микросхеме косяк...

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Ср дек 04, 2013 17:17:38

И снова здрасте :) Перечитывал тут книжечку одного паренька с незатейливой русской фамилией Понг Чу (Pong Chu) про плис, и остановил внимание на строчке про умножение. Он пишет, что это операция определена для типа integer. Далее в книге он пишет, что дескать умножение это сложная операция и зависит она от того какой у меня софт и аппаратная часть. Затем говорит о встроенных умножителях (я так понял аппаратных), и о том что дескать Xilinx (а в другой книге и Altera не отстаёт) это дело поддерживают. Я написал проектик, скомпилировал его и посмотрел. Всё работает, посмотрел в квартусе на скомпилированную схему, но вот в том что там развилось так и не въехал. Более того, скомпилилось даже деление! При этом в сводной таблице написано, что умножители задействованы не были (чего и стоило ожидать). Может это всё кто нить прокомментировать. И стоит ли пользоваться таким умножением в своих проектах или нет?

P.S. Приведу кодик.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
--use IEEE.NUMERIC_STD.ALL;

entity multipl is
port ( d_in : in std_logic_vector(3 downto 0);
d_out : out std_logic_vector(3 downto 0)
);
end multipl;

architecture behavioral of multipl is

signal d_in1 : integer range 0 to 15 := 0;
signal d_out1 : integer range 0 to 15 := 0;

begin

d_in1 <= conv_integer(d_in);
d_out1 <= (d_in1) * 3 ;
d_out <= conv_std_logic_vector(d_out1, 4);


end behavioral;

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Ср дек 04, 2013 19:16:56

Параллельное умножение на 3 это сумма X + (X << 1).
Возможно компилятор счёл неразумным тратить ячейку умножителя на такую ерунду. :)
Попробуйте умножить две шины (два целых числа заранее неизвестных).

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Ср дек 04, 2013 19:18:11

Кто нибудь собирал платформу с microblaze хоть раз ?

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Чт дек 05, 2013 19:24:27

Kavka, Вы правы... Надо поэкспериментировать!

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Пт дек 27, 2013 08:33:27

Всем привет. Выручайте!!!
Код:
#include "xparameters.h"
#include "stdio.h"
#include "xgpio.h"
#include "xutil.h"
#include "xtmrctr.h"
#include "xintc.h"
#include "mb_interface.h"

#define SIZE 150                       
#define LED_CHANNEL 1

XGpio Gpio;
XTmrCtr XPS_Timer;
XIntc InterruptController;
XTmrCtr* TmrCtrInstancePtr;

unsigned char flag = 0;


void TimerCounterHandler(void *CallBackRef, Xuint8 TmrCtrNumber)
{
flag = ~ flag;   
XGpio_DiscreteWrite(&Gpio,LED_CHANNEL,0xFF);
}

//================
int main (void) {

   /*
    * Enable and initialize cache
    */
   #if XPAR_MICROBLAZE_0_USE_ICACHE
      microblaze_invalidate_icache();
      microblaze_enable_icache();
   #endif

   #if XPAR_MICROBLAZE_0_USE_DCACHE
      microblaze_invalidate_dcache();
       microblaze_enable_dcache();
   #endif


   //Инициализация GPIO драйвера
XGpio_Initialize(&Gpio, XPAR_LEDS_POSITIONS_DEVICE_ID);
   //Установим порты на выход
XGpio_SetDataDirection(&Gpio, LED_CHANNEL,0x0);
    // Установим выходной порт в 1
XGpio_DiscreteWrite(&Gpio,LED_CHANNEL,0x00);


   volatile int j,i,k;
   volatile double time;
   
    float A[SIZE][SIZE] ;
    float B[SIZE][SIZE] ;
    float C[SIZE][SIZE] ;
    float temp;
   
   XGpio_DiscreteWrite(&Gpio,LED_CHANNEL,0x0F);
   
   for( j=0; j < SIZE ; j++ )   
  for( i=0; i < SIZE ; i++ )   
  {
   A[j][i] = 2.34;
   B[j][i] = 1.23;
  }
   
   print("Start \n\r");
   

for( j=0; j < SIZE ; j++ )   
  for( i=0; i < SIZE ; i++ )   
  { 
     temp = 0;
     for( k=0; k < SIZE ; k++ )
     {    
     A[j][k] = 1.2;
     B[j][k] = 1.2;
     temp += A[j][k]*B[k][i];
     }
      C[j][i] = temp;
  }


      
print("Stop \n\r");

XGpio_DiscreteWrite(&Gpio,LED_CHANNEL,0xFF);

return 0;
}



Почему то отказывается выполнять циклы и всё что ниже них :
Код:
for( j=0; j < SIZE ; j++ )   
  for( i=0; i < SIZE ; i++ )   
  { 
     temp = 0;
     for( k=0; k < SIZE ; k++ )
     {    
     A[j][k] = 1.2;
     B[j][k] = 1.2;
     temp += A[j][k]*B[k][i];
     }
      C[j][i] = temp;
  }


Даже при отключенной оптимизации.
volatile - не помогает.

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Пт дек 27, 2013 12:11:22

dimitriy91 писал(а):Начнём с того, что в ПЛИС прошивка храниться не может.

Еще и как может. Семейство Altera MAX, например.

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Пт дек 27, 2013 12:13:35

это CPLD

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Пт дек 27, 2013 13:20:14

Спасибо Кэп :)))
CPLD (англ. Complex Programmable Logic Device) — программируемая логическая интегральная схема (ПЛИС)

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Пт дек 27, 2013 13:37:24

О Господи. Вам время своё не жалко тратить на подобное? Ясен пень под ПЛИС я подразумевал FPGA. Вы лучше по микроблайзу подскажите.

Re: Мелкие вопросы по ПЛИС ( FPGA/CPLD ) и прошивки на них

Пт дек 27, 2013 14:21:23

По Xilinx к сожалению не подскажу, тк занимаюсь только с Altera.
Ответить