Jump to content

    

ISA(16 разрядов)

К сожелению нет.

Кстати,не подскажете сигнал SBHE приходит после установки адреса порта,а в какое значение он первоначально устанавливается 0 или 1 ,т.е. какой байт будет передоваться в данный момент старший или младший?

 

SBHE min 20 нс после спада BALE. А спад BALE минимум 130нс после установки адреса. Это по спецификации АТ96. РС104 не читал, но думаю что ISA одинакова реализована. Про значение SBHE у Гука на 154 странице. При 16-ти разрядном чтении-записи портов по четным адресам он должен быть 0.

Share this post


Link to post
Share on other sites

Вот засада,ещё и макет перегрелся,и почему на PCM не ставят активного охлаждения...Вот если так сделать,как думаете-пойдёт?У меня почему-то сомнения по этому поводу.

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

entity test_PC104 is
Port ( d : inout  STD_LOGIC_VECTOR (15 downto 0);
a : in  STD_LOGIC_VECTOR (15 downto 0);
prog_clk : out STD_LOGIC_VECTOR (15 downto 0);
IO_CS16 : out STD_LOGIC;
SBHE  : in STD_LOGIC;
aen : in  STD_LOGIC;
ior : in  STD_LOGIC;
iow : in  STD_LOGIC);
end test_PC104;
architecture Behavioral of test_PC104 is
signal pr_clk : STD_LOGIC;
begin
pr_clk<='1' when conv_integer(a) = 63493 and aen='0' else '0';
IO_CS16<='0' when pr_clk='1' else '1';
process(SHBE)
begin
if SHBE='1' then
if iow='0' then
if pr_clk='1' then
prog_clk(7 downto 0)<=d(7 downto 0);
end if;
end if;
elsif SHBE='0' then
if iow='0' then
if pr_clk='1' then
prog_clk(15 downto 8)<=d(15 downto 8);
end if;
end if;
end if;
end process;
end Behavioral;

Edited by darkniisiis

Share this post


Link to post
Share on other sites

У вас получилась защёлка, управляемая SBHE. Если же он не измениться, что и должно быть при нормальной 16-разрядной передачи, то ничего не произойдет.

Share this post


Link to post
Share on other sites

гук не скачивается,у него в названии русские буквы,скорее всего глюк из-за этого.

Я просто думал что SBHE изменяется в зависимости от того какой байт передаётся,0-старший,1-младший.

Share this post


Link to post
Share on other sites
гук не скачивается,у него в названии русские буквы,скорее всего глюк из-за этого.

Я просто думал что SBHE изменяется в зависимости от того какой байт передаётся,0-старший,1-младший.

 

http://ifolder.ru/2707399

Share this post


Link to post
Share on other sites
Вроде как адрес вообще не имеет отношения к абоненту на ИСЕ при ПДП. Вопрос: Вы как программируете контроллер ПДП у CS5530 ? По моим наблюдениям он нормально не выполняет Extended Write и Compressed Time режимы передачи. Только Normal.

 

По умолчанию. Значит вроде бы должен стоять режим Normal. Но надо проверить, может в этом все дело. Спасибо за подсказку. Программист только в понедельник из отпуска выйдет :( лето. О результатах напишу.

 

После того как запрограммировали командный регистр DMA вручную ( в режиме Normal), все заработало. Черт знает как биос его программирует (или линукс), видимо меняет значения по умолчанию.

LMT, спасибо за помощь! :beer:

Share this post


Link to post
Share on other sites

Посмотрел сегодня, Ваши симптомы были похожи на Extended Write. Странно, что BIOS/Linux выставляет этот режим.

В любом случае хорошо, что заработало :) :)

Share this post


Link to post
Share on other sites

Поясните пожалуйста поведение слейва на шине при записи 16-ти разрядного числа в нечетный адрес. Как я понимаю такого быть не должно, а вдруг случится?

в частности интересует сигнал IOCS16 (подразумевается что слейв 16-ти разрядный)

я так понимаю что слейв должен запретить передачу двух байт за один такт?

Share this post


Link to post
Share on other sites
Почту глянь! я те скинул свой старый проект для ISA шины на PC104.

Вопросы будут, пиши в личку !

 

Скиньте пожайлуста и мне свой старый проект для ISA шины на PC104.

Share this post


Link to post
Share on other sites
Поясните пожалуйста поведение слейва на шине при записи 16-ти разрядного числа в нечетный адрес. Как я понимаю такого быть не должно, а вдруг случится?

в частности интересует сигнал IOCS16 (подразумевается что слейв 16-ти разрядный)

я так понимаю что слейв должен запретить передачу двух байт за один такт?

 

Не надо писать 16 разрядные числа в нечетные адреса, геморой и снижение производительности :) Оно происходит в два такта. Чтобы определить где находяться данные (младший\старший байт) нужно анализировать nSBHE. Очень подробно расписано у Гука, ссылка в этой теме есть. IOCS16 не зависит от того, четный адрес или нечетный.

 

Пишите-читайте по четным адресам. IOCS16 выставляется простым дешифрированием адреса. nSBHE вообще при этом не нужен.

 

Совсем забыл: не надо дешифрировать нечетные адреса. Проблем меньше.

Share this post


Link to post
Share on other sites
Не надо писать 16 разрядные числа в нечетные адреса, геморой и снижение производительности :) Оно происходит в два такта. Чтобы определить где находяться данные (младший\старший байт) нужно анализировать nSBHE. Очень подробно расписано у Гука, ссылка в этой теме есть. IOCS16 не зависит от того, четный адрес или нечетный.

 

Пишите-читайте по четным адресам. IOCS16 выставляется простым дешифрированием адреса. nSBHE вообще при этом не нужен.

 

Совсем забыл: не надо дешифрировать нечетные адреса. Проблем меньше.

 

да я прекрасно это понимаю что не надо, но есть люди которые хотят затычку от непредвиденных ситуаций.. и при тестах на разных контроллерах шины были получены разные результаты при записи двубайтного числа по нечетному адресу... вот я и хотел уточнить этот момент, описана ли эта ситуация в стандарте на шину

 

p.s. поковырявшись в Гуке нашел вроде нужную табличку, будем надеяться что так оно и есть на самом деле)

Edited by UserXP

Share this post


Link to post
Share on other sites
да я прекрасно это понимаю что не надо, но есть люди которые хотят затычку от непредвиденных ситуаций.. и при тестах на разных контроллерах шины были получены разные результаты при записи двубайтного числа по нечетному адресу... вот я и хотел уточнить этот момент, описана ли эта ситуация в стандарте на шину

 

Это наверно еще впрямую от схемной реализации зависит.

Если ваша плата выполняет 16 разрядный цикл доступа, а хотите его завершить как 8 разрядный, надо запрещать сигналы i/o cs16, или memcs16.

Да еще при этом обычно при обмене словами игнорируют при дешифрации адреса sbhe и sa0.

Что будет в результате обращения по нечетному адресу при обмене словами, вряд ли это у Гука описано.

Share this post


Link to post
Share on other sites

самое интересное что да, написано... и написано что делать чтобы добиться "максимальной" совместимости

 

проверяю..

Share this post


Link to post
Share on other sites
Что будет в результате обращения по нечетному адресу при обмене словами, вряд ли это у Гука описано.

 

Офигительно все там написано.

 

И все таки не пойму, зачем по нечетным адресам работать? Софт так написан и не может быть переделан?

___.pdf

Share this post


Link to post
Share on other sites

Дайте плиз. исходничек работающий или киньте на mail. Спасибо!!

 

Дайте плиз. исходничек работающий или киньте на mail. Спасибо!!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this