Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помощь новечку
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
BuTeK
Недавно начал пробывать программировать на VHDL. И у меня случилась такая беда: не получается написать программу которая бы посылала по одной восьмибитной шине станачало первый байт затем после 10нс второй байт. Помогите кто знает...
И ещё вопрос имеется кабель JTAG для программирования сигнального процессора TI подойдёт ли он к программирыванию Spartana 3?
makc
Цитата(BuTeK @ May 4 2006, 21:44) *
Недавно начал пробывать программировать на VHDL. И у меня случилась такая беда: не получается написать программу которая бы посылала по одной восьмибитной шине станачало первый байт затем после 10нс второй байт. Помогите кто знает...


А Вы потрудились прежде чем начать заниматься практическим освоением VHDL освоить теоретическую часть? Книжки и т.п.?

Цитата
И ещё вопрос имеется кабель JTAG для программирования сигнального процессора TI подойдёт ли он к программирыванию Spartana 3?


Для стандартных программ загрузки прошивок ответ - нет.
o-henry
Цитата(BuTeK @ May 4 2006, 20:44) *
не получается написать программу которая бы посылала по одной восьмибитной шине станачало первый байт затем после 10нс второй байт. Помогите кто знает...


"не получается" - это как?
Написали код в VHDL, а он не работает? Тогда код приведите-поправим.
Или вообще непонятно как на VHDL писать? Тогда читайте книжки.
KykyryzzZ
Скачайте ieee1076 vhdl 2000, там все понятно написано и в примерах, многие вопросы сами отпадут. Если не найдете могу прислать, вроде валялся где-то.
BuTeK
Цитата(KykyryzzZ @ May 5 2006, 10:46) *
Скачайте ieee1076 vhdl 2000, там все понятно написано и в примерах, многие вопросы сами отпадут. Если не найдете могу прислать, вроде валялся где-то.


Скинь мне на мыло (butek@server.by) если не сложно. Зарание большое спасибо.. ;-)
BuTeK
То есть почитал азов... И с книжкой в руках начал пробывать писать мелкие программки, но сталкнулся с проблемкой и не могу понять в чём дело... Где что не так я пишу?!
Листинг программы примерно такой:

output: process (EO)
begin
if (EO='1' amd EO'event) then
DO<=DI(15 downto 8), DI(7 downto 0) after 10ns;
end if;
end process output;
makc
Цитата(BuTeK @ May 5 2006, 21:52) *
То есть почитал азов... И с книжкой в руках начал пробывать писать мелкие программки, но сталкнулся с проблемкой и не могу понять в чём дело... Где что не так я пишу?!
Листинг программы примерно такой:

output: process (EO)
begin
if (EO='1' amd EO'event) then
DO<=DI(15 downto 8), DI(7 downto 0) after 10ns;
end if;
end process output;


Как вы себе представляете задержку в 10 ns, реализованную в железе (автоматически, синтезатором)?
Лично я - слабо себе такое представляю... Итак, можно сделать вывод, что написанное Вами не может адекватно быть реализовано в железе - значит нужно искать другое описание. Например, использовать некоторую тактовую частоту и на ее основе выполнять выдачу данных и т.п.
o-henry
Цитата(BuTeK @ May 5 2006, 20:52) *
DO<=DI(15 downto 8), DI(7 downto 0) after 10ns;


конструкция after НЕСИНТЕЗИРУЕМАЯ.
То есть Вы можете применять ее для поведенческого моделирования и написания testbench,
но синтезатор, который превращает исходник на VHDL в схему из базовых элементов,
конструкцию after просто игнорирует.

Я не совсем понимаю, что Вы хотите получить от схемы, но писал бы код примерно так:

Код
......
signal EO : std_logic;
signal Write_Hi : std_logic;
......
output: process (clk) --такт с периодом 10 ns
begin
if (clk'event and clk='1')
then
  
  if (EO='1') then
     if (Write_Hi='1')
     then
       DO<=DI(15 downto 8);
     else
       DO<=DI(7 downto 0);
     end if;
  else
   ........
  end if;
end if;
end process output;
KykyryzzZ
Вот такая же задача решается =>
http://electronix.ru/forum/index.php?showtopic=15768&hl=
Alex_xxx
Могу посоветотовать посмотреть о VHDL по ссылке:

http://www.ece.msstate.edu/~reese/EE4743/
ishergin
Вам надо изучить конечные автоматы, тогда будет легко делать подобные вещи или более сложные

Во небольшой пример (могут быть синтаксические ошибки)
Код
.....
.....

entiny XXX is
   port (
      clk : in std_logic; -- тактовый сигнал с периодом в 10 нс
      rst : in std_logic; -- сброс
      ena : in std_logic; -- сигнал разрешения
      byte1 : in std_logic_vector (7 downto 0);
      byte2 : in std_logic_vector (7 downto 0);
      byte_out : out std_logic_vector (7 downto 0)
   );
end XXX;

architecture behav of XXX is  

type tstate is (sm_Idle, sm_Byte2);

signal state : tstate;

sm_proc: process (clk, rst)
begin
  if rst = '1' then
    state <= sm_Idle;
  elsif rising_edge(clk) then
    case state of
      when sm_Idle =>
          if ena = '1'  then
             state <= sm_Byte2;
             byte_out <= byte1;
          end if;
      when sm_Byte1 =>
          byte_out <= byte2;
          state <= sm_Idle;
     end case;
  end if;
end process;

end XXX;


надеюсь пример поможет понят работу, засуньте его в симулятор какой нибудь smile.gif, так нагляднее...
BuTeK
Всем спасибо!!! Действительно много нового узнал... И самое интересное, что такой оговорки при описании after нигде не встречал... Хотя часто встречал, что такое after применяют для избежания дребезга... И сейчас не могу понять от какого дребизга... при эмуляции дребезга ведь нет, а в реальную железку не запишется... или я что-то не так понимаю?!
А если ли внутренний генератор у Spartana 3? И программируется ли он? А то я раньше думал тоже программировать Clk спомощью after cool.gif
ishergin
Цитата(BuTeK @ May 12 2006, 00:37) *
Всем спасибо!!! Действительно много нового узнал... И самое интересное, что такой оговорки при описании after нигде не встречал... Хотя часто встречал, что такое after применяют для избежания дребезга... И сейчас не могу понять от какого дребизга... при эмуляции дребезга ведь нет, а в реальную железку не запишется... или я что-то не так понимаю?!
А если ли внутренний генератор у Spartana 3? И программируется ли он? А то я раньше думал тоже программировать Clk спомощью after cool.gif


Генератора нету, вам надо будет использовать внешний генератор, зато есть блок умножения частоты на 2.
В литературе по Verilog/VHDL обычно указываются какие конструкции языка являются синтезируемыми.

Вот пример подавления дребезга для железки (например от кнопки, которая подключена к плис)
Нажмите для просмотра прикрепленного файла

ЗЫ. постарайтесь найти нармальную литературу smile.gif

Удачи!
o-henry
Цитата(BuTeK @ May 11 2006, 21:37) *
А если ли внутренний генератор у Spartana 3? И программируется ли он? А то я раньше думал тоже программировать Clk спомощью after cool.gif


Встроенного генератора нет. Нужно подключать внешний генератор.
Внутри спартана есть модули DCM - Digital clock manager, которые позволяют делить/умножать входную тактовую частоту. Но при этом входная тактовая частота должна быть в определенных пределах.
(навскидку точно не впомню, кажется от 25 до 100 МГц - посмотрите Datasheet на Spartan-3)
Работа модуля DCM обсуждалась здесь:
http://electronix.ru/forum/index.php?showtopic=14523&st=0
Можете посмотреть мой пример тестового проекта с использованием DCM:
http://electronix.ru/forum/index.php?act=A...pe=post&id=5060
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.