Перейти к содержанию
    

Как прочитать сигнал?

Помогите прочитать сигнал.

Суть задачи:

На одном входе ксайленса появляется или высокое напряжение или низкое, на втором входе идут данные если на первом входе высокое напряжение то считается что это данные из первого канала, а если низкое то это данные со второго канала.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что значит высокое или низкое напряжение? какого уровня сигналы? Можеть вы имели в виду логическую '1' и '0' ? Уточните...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, имено это, логический 0 или 1

 

Я написал команды, вот что получилось

 

process (read_data)

if LR=1 then canal_1:= DataLR;

else canal_2:=DataLR;

 

Тип данных у canal_1, canal_2: bit_vector (23 downto o)

а LR Это имя порта куда поступает лог ноль или единица

 

DataLR имя порта куда поступают данные

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему у вас один канал (входной порт)? Вроде вы писали, что у вас их 2.. Если у вас по одному каналу переадются данные, а вам их надо декодировать, то вы правильно написали... (правильнее написать canal_1 <= DataLR и для второго тоже) Но тут важно с какой частотой меняются ваши входные данные. Попробуйте затактировать ваш процесс..

 

:= присваивание переменной

<= меньше или равно, а также назначение сигнала

Изменено пользователем RKOB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да данные передаются по однаму канала, и их надо декадировать и разбить на два, и ещё, данные 24 бита и между ними есть временные промежутки, нужно ли что то делать, что бы за распазнавать когда за временным промежутком начинаются данные, что бы не принять временной промежуток как последовательность из нулей.

А что значит затактировать процесс?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Под "затактировать" - имелось в виду "синхронизировать по клоку" (if CLK = '1' and CLK'event then)... Поменяйте ":=" на "<=" !!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) А у вас синхросигнал какой-нибудь поступает на ПЛИС?

2) А нет ли ещё сигнала с понятием "значимость данных на входе"? Чтобы определить те самые паузы о которых вы говорите, и не принимать их за данные?

3) Наверное написали бы весь HDL файл?

 

В моем представлении должно быть что-то вроде:

entity data_mux is
  port(
    Data : in std_logic_vector(23 downto 0);
    V : in std_logic; --значимость
    Chan_Num : std_logic; --номер канала
    clk : in std_logic --синхросигнал
  );
end entity;

architecture data_mux of data_mux is
signal Int_Data : std_logic_vector(23 downto 0); --внутренний триггер для данных
signal Int_V : std_logic; --внутренний триггер для значимости
signal Int_Chan_Num : std_logic; --внутренний триггер для номера канала

signal Chan1_D : std_logic_vector(23 downto 0); --данные для 1 канала.
signal Chan2_D : std_logic_vector(23 downto 0); --данные для 2 канала.
signal Chan1_V : std_logic; --значимость для 1-го канала.
signal Chan1_V : std_logic; --значимость для 2-го канала.

begin
process(clk)
begin
  if clk'event and clk='1' then
    Int_Data <= Data;
    Int_V <= V;
    Int_Chan_Num <= Chan_Num;
    Chan1_V <= '0';
    Chan2_V <= '0';
    Chan1_D <= Int_Data;
    Chan2_D <= Int_Data;
    if Int_V = '1' then
      if Int_Chan_Num = '0' then
        Chan1_V <= '1';
      else
        Chan2_V <= '1';
      end if;
    end if;
  end if;
end process;
end data_mux;

 

Примерно так в моем представлении.

Но вы дали недостаточно данных, как мне кажется.

Возможно немного не то, что вам надо, но это потому что вы не объяснили... :) Попробуйте объяснить подробнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за примеры! Многое стало панятно.

Про сигнал значимости буду уточнять, а весь VHDL файл только в разработке, по этому и не написал, а как без сигнала значимости выделить данные или это очень сложно??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а почему нельзя сразу присвоить

Chan1_D <= Data;

 

а сначало делаем

Int_Data <= Data

а потом только

Chan1_D <= Int_Data;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу ли я потом поместить данные из каналов

signal Chan1_D : std_logic_vector(23 downto 0); --данные для 1 канала.

signal Chan2_D : std_logic_vector(23 downto 0); --данные для 2 канала.

 

поместить в FIFO буфер или навдо что бы был тип данных std_bit_vector?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а почему нельзя сразу присвоить

Chan1_D <= Data;

 

а сначало делаем

Int_Data <= Data

а потом только

Chan1_D <= Int_Data;

Не знаю, везде ли, но у некоторых плисов есть такое понятие как входной триггер. Этот триггер стоит непосредственно у ножки. Чтобы синтезатор мог поместить триггер именно к ножке важно принять данные на первый триггер без изменений.

Могу ли я потом поместить данные из каналов

signal Chan1_D : std_logic_vector(23 downto 0); --данные для 1 канала.

signal Chan2_D : std_logic_vector(23 downto 0); --данные для 2 канала.

 

поместить в FIFO буфер или навдо что бы был тип данных std_bit_vector?

Можете. А std_logic нагляднее моделируется в отличие от bit

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как в ISE 8.1i осуществлять пошаговую трассировку

Ну почитай уже мануал...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...