реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Работа с двунаправленной ногой
nya
сообщение Nov 27 2008, 11:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 17-04-07
Пользователь №: 27 107



Здравствуйте.
Подскажите пожалуйста, как правильно организовать двунаправленную линию? Имеет место быть некий блок на VHDL, (а точнее два одинаковых блока - для проверки их работы) с двунаправленным портом. В симуляции работает нормально,то есть передача данных в обе стороны (между двумя блоками) работает как нужно, без неопределенностей. В блоке, работающем на прием, входовыход стоит в Z.
В плисе - без соединения входов-выходов - тоже работает, но если соединить - никакого сигнала нет. Как нужно правильно организовать эти самые входовыходы? Какие-то буферы, или настройки имплементации... Плис - Xilinx Spartan 2, среда разработки - AHDL+ISE9.2
Или, может, ссылку на информацию об этом...
Спасибо.
Go to the top of the page
 
+Quote Post
o-henry
сообщение Nov 27 2008, 12:24
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 8-03-06
Из: степей Украины
Пользователь №: 15 069



Цитата(nya @ Nov 27 2008, 13:23) *
Здравствуйте.
Как нужно правильно организовать эти самые входовыходы?
Спасибо.
Дело ясное, что дело тёмное...
В общем, код в студию.

Цитата(nya @ Nov 27 2008, 13:23) *
В плисе - без соединения входов-выходов - тоже работает, но если соединить - никакого сигнала нет.
Это как? Если подавать внешние сигналы на выводы по отдельности-то работает, а если замкнуть выводы между собой перемычкой и на один выводить а с другого читать - то не работает?
Go to the top of the page
 
+Quote Post
sazh
сообщение Nov 27 2008, 12:55
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(nya @ Nov 27 2008, 14:23) *
Подскажите пожалуйста, как правильно организовать двунаправленную линию? Имеет место быть некий блок на VHDL, (а точнее два одинаковых блока - для проверки их работы) с двунаправленным портом.


Наверно проблема в управлении буфером по третьему состоянию. Управление должно быть в противофазе при использовании одного и того же блока в системе из этих 2х блоков.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Nov 27 2008, 12:58
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(nya @ Nov 27 2008, 15:23) *
Подскажите пожалуйста, как правильно организовать двунаправленную линию?
Неоднократно обсуждалось. Воспользуйтесь поиском.

А вообще говоря, нваерное, надо начинать заполнять wiki... Только со структурой определиться.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Nov 27 2008, 13:14
Сообщение #5


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(nya @ Nov 27 2008, 15:23) *
Здравствуйте.
Подскажите пожалуйста, как правильно организовать двунаправленную линию? Имеет место быть некий блок на VHDL, (а точнее два одинаковых блока - для проверки их работы) с двунаправленным портом. В симуляции работает нормально,то есть передача данных в обе стороны (между двумя блоками) работает как нужно, без неопределенностей. В блоке, работающем на прием, входовыход стоит в Z.
В плисе - без соединения входов-выходов - тоже работает, но если соединить - никакого сигнала нет. Как нужно правильно организовать эти самые входовыходы? Какие-то буферы, или настройки имплементации... Плис - Xilinx Spartan 2, среда разработки - AHDL+ISE9.2
Или, может, ссылку на информацию об этом...
Спасибо.


Поиск рулит

http://electronix.ru/forum/index.php?showt...%E1%F3%F4%E5%F0


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
nya
сообщение Nov 27 2008, 13:28
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 17-04-07
Пользователь №: 27 107



Цитата(o-henry @ Nov 27 2008, 15:24) *
Дело ясное, что дело тёмное...
В общем, код в студию.

Это как? Если подавать внешние сигналы на выводы по отдельности-то работает, а если замкнуть выводы между собой перемычкой и на один выводить а с другого читать - то не работает?

Код достаточно объемный, я думал, что дело именно в каких-то особых настройках...

С выводами - именно так. Я путано выразился, извините, не выспался сегодня.

Цитата(andrew_b @ Nov 27 2008, 15:58) *
Неоднократно обсуждалось. Воспользуйтесь поиском.

А вообще говоря, нваерное, надо начинать заполнять wiki... Только со структурой определиться.


Я пытался искать, не нашел. Вики - было бы просто отлично...

Цитата(Maverick @ Nov 27 2008, 16:14) *


Спасибо большое, изучу.
Go to the top of the page
 
+Quote Post
Alex_Sht
сообщение Dec 1 2008, 13:36
Сообщение #7





Группа: Новичок
Сообщений: 1
Регистрация: 1-12-08
Пользователь №: 42 121



Цитата(nya @ Nov 27 2008, 15:23) *
Здравствуйте.
Подскажите пожалуйста, как правильно организовать двунаправленную линию? Имеет место быть некий блок на VHDL, (а точнее два одинаковых блока - для проверки их работы) с двунаправленным портом. В симуляции работает нормально,то есть передача данных в обе стороны (между двумя блоками) работает как нужно, без неопределенностей. В блоке, работающем на прием, входовыход стоит в Z.
В плисе - без соединения входов-выходов - тоже работает, но если соединить - никакого сигнала нет. Как нужно правильно организовать эти самые входовыходы? Какие-то буферы, или настройки имплементации... Плис - Xilinx Spartan 2, среда разработки - AHDL+ISE9.2
Или, может, ссылку на информацию об этом...
Спасибо.

library ieee;
use ieee.std_logic_1164.all;

entity InOutGen is
GENERIC (DataRange : integer);
port
(
ClockIn, -- General Clock
nResetIn, -- General Reset active low
nEnable : in std_logic; -- Active 0 for read
DataIn : in std_logic_vector(DataRange downto 0);
DataOut : out std_logic_vector(DataRange downto 0);
DataIO : inout std_logic_vector(DataRange downto 0)
);
end InOutGen;

architecture ArchInOutGen of InOutGen is
signal DataIoTmp : std_logic_vector(DataRange downto 0);
signal DataOutTmp : std_logic_vector(DataRange downto 0);
begin
DataIoTmp <= DataIO;
DataOut <= DataOutTmp;

InOutProcess:
process (nResetIn,ClockIn,nEnable,DataIoTmp,DataIn,DataOutTmp)
begin
if (nResetIn = '0')then
DataIO <= (others => 'Z');
DataOutTmp <= (others => '0');
elsif ClockIn'event and ClockIn = '1'then
if nEnable = '0' then
DataIO <= DataIn;
DataOutTmp <= DataOutTmp;
else
DataIO <= (others => 'Z');
DataOutTmp <= DataIoTmp;
end if;
end if;
end process InOutProcess;

end ArchInOutGen;
Прикрепленные файлы
Прикрепленный файл  InOutGen.vhd ( 1.11 килобайт ) Кол-во скачиваний: 35
 
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Dec 1 2008, 13:41
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Alex_Sht @ Dec 1 2008, 17:36) *

Пользуйтесь тегами code и/или codebox для офрмления кода. Иначе читать тяжело.
Несколько вопросов по коду:
Зачем столько сигналов в списке чувствительности?
Зачем DataOutTmp <= DataOutTmp;
И где вы нашли триггеры с Z-состоянием на выходе?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th August 2025 - 10:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.36801 секунд с 7
ELECTRONIX ©2004-2016