IUser 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба Помогите прочитать сигнал. Суть задачи: На одном входе ксайленса появляется или высокое напряжение или низкое, на втором входе идут данные если на первом входе высокое напряжение то считается что это данные из первого канала, а если низкое то это данные со второго канала. Подскажите какой командой распазнать какое напряжение на первом входе, и какой камандой принять данные, а то я вообще запутался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RKOB 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба А что значит высокое или низкое напряжение? какого уровня сигналы? Можеть вы имели в виду логическую '1' и '0' ? Уточните... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IUser 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба Да, имено это, логический 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 имя порта куда поступают данные Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RKOB 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 (изменено) · Жалоба Почему у вас один канал (входной порт)? Вроде вы писали, что у вас их 2.. Если у вас по одному каналу переадются данные, а вам их надо декодировать, то вы правильно написали... (правильнее написать canal_1 <= DataLR и для второго тоже) Но тут важно с какой частотой меняются ваши входные данные. Попробуйте затактировать ваш процесс.. := присваивание переменной <= меньше или равно, а также назначение сигнала Изменено 28 февраля, 2007 пользователем RKOB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IUser 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба Да данные передаются по однаму канала, и их надо декадировать и разбить на два, и ещё, данные 24 бита и между ними есть временные промежутки, нужно ли что то делать, что бы за распазнавать когда за временным промежутком начинаются данные, что бы не принять временной промежуток как последовательность из нулей. А что значит затактировать процесс? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RKOB 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба Под "затактировать" - имелось в виду "синхронизировать по клоку" (if CLK = '1' and CLK'event then)... Поменяйте ":=" на "<=" !!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AJIEKCEu 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба 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; Примерно так в моем представлении. Но вы дали недостаточно данных, как мне кажется. Возможно немного не то, что вам надо, но это потому что вы не объяснили... :) Попробуйте объяснить подробнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IUser 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба Спасибо за примеры! Многое стало панятно. Про сигнал значимости буду уточнять, а весь VHDL файл только в разработке, по этому и не написал, а как без сигнала значимости выделить данные или это очень сложно?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IUser 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба а почему нельзя сразу присвоить Chan1_D <= Data; а сначало делаем Int_Data <= Data а потом только Chan1_D <= Int_Data; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IUser 0 1 марта, 2007 Опубликовано 1 марта, 2007 · Жалоба Могу ли я потом поместить данные из каналов signal Chan1_D : std_logic_vector(23 downto 0); --данные для 1 канала. signal Chan2_D : std_logic_vector(23 downto 0); --данные для 2 канала. поместить в FIFO буфер или навдо что бы был тип данных std_bit_vector? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AJIEKCEu 0 1 марта, 2007 Опубликовано 1 марта, 2007 · Жалоба а почему нельзя сразу присвоить 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IUser 0 1 марта, 2007 Опубликовано 1 марта, 2007 · Жалоба Как в ISE 8.1i осуществлять пошаговую трассировку Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 1 марта, 2007 Опубликовано 1 марта, 2007 · Жалоба Как в ISE 8.1i осуществлять пошаговую трассировку Ну почитай уже мануал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IUser 0 1 марта, 2007 Опубликовано 1 марта, 2007 · Жалоба Я читаю, да что то не нашол, может падскажете как хоть называется pdf файл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться