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

 
 
 
Reply to this topicStart new topic
> Помощь новечку, Помоги новичку с VHDL
BuTeK
сообщение May 4 2006, 17:44
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 67
Регистрация: 25-04-06
Из: Беларусь, Гомель
Пользователь №: 16 450



Недавно начал пробывать программировать на VHDL. И у меня случилась такая беда: не получается написать программу которая бы посылала по одной восьмибитной шине станачало первый байт затем после 10нс второй байт. Помогите кто знает...
И ещё вопрос имеется кабель JTAG для программирования сигнального процессора TI подойдёт ли он к программирыванию Spartana 3?
Go to the top of the page
 
+Quote Post
makc
сообщение May 4 2006, 19:00
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(BuTeK @ May 4 2006, 21:44) *
Недавно начал пробывать программировать на VHDL. И у меня случилась такая беда: не получается написать программу которая бы посылала по одной восьмибитной шине станачало первый байт затем после 10нс второй байт. Помогите кто знает...


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

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


Для стандартных программ загрузки прошивок ответ - нет.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
o-henry
сообщение May 5 2006, 07:32
Сообщение #3


Местный
***

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



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


"не получается" - это как?
Написали код в VHDL, а он не работает? Тогда код приведите-поправим.
Или вообще непонятно как на VHDL писать? Тогда читайте книжки.
Go to the top of the page
 
+Quote Post
KykyryzzZ
сообщение May 5 2006, 07:46
Сообщение #4



***

Группа: Свой
Сообщений: 404
Регистрация: 20-10-05
Пользователь №: 9 885



Скачайте ieee1076 vhdl 2000, там все понятно написано и в примерах, многие вопросы сами отпадут. Если не найдете могу прислать, вроде валялся где-то.
Go to the top of the page
 
+Quote Post
BuTeK
сообщение May 5 2006, 17:35
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 67
Регистрация: 25-04-06
Из: Беларусь, Гомель
Пользователь №: 16 450



Цитата(KykyryzzZ @ May 5 2006, 10:46) *
Скачайте ieee1076 vhdl 2000, там все понятно написано и в примерах, многие вопросы сами отпадут. Если не найдете могу прислать, вроде валялся где-то.


Скинь мне на мыло (butek@server.by) если не сложно. Зарание большое спасибо.. ;-)
Go to the top of the page
 
+Quote Post
BuTeK
сообщение May 5 2006, 17:52
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 67
Регистрация: 25-04-06
Из: Беларусь, Гомель
Пользователь №: 16 450



То есть почитал азов... И с книжкой в руках начал пробывать писать мелкие программки, но сталкнулся с проблемкой и не могу понять в чём дело... Где что не так я пишу?!
Листинг программы примерно такой:

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;
Go to the top of the page
 
+Quote Post
makc
сообщение May 5 2006, 18:38
Сообщение #7


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(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, реализованную в железе (автоматически, синтезатором)?
Лично я - слабо себе такое представляю... Итак, можно сделать вывод, что написанное Вами не может адекватно быть реализовано в железе - значит нужно искать другое описание. Например, использовать некоторую тактовую частоту и на ее основе выполнять выдачу данных и т.п.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
o-henry
сообщение May 5 2006, 19:16
Сообщение #8


Местный
***

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



Цитата(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;
Go to the top of the page
 
+Quote Post
KykyryzzZ
сообщение May 6 2006, 09:14
Сообщение #9



***

Группа: Свой
Сообщений: 404
Регистрация: 20-10-05
Пользователь №: 9 885



Вот такая же задача решается =>
http://electronix.ru/forum/index.php?showtopic=15768&hl=
Go to the top of the page
 
+Quote Post
Alex_xxx
сообщение May 10 2006, 13:04
Сообщение #10





Группа: Новичок
Сообщений: 10
Регистрация: 24-11-05
Пользователь №: 11 333



Могу посоветотовать посмотреть о VHDL по ссылке:

http://www.ece.msstate.edu/~reese/EE4743/
Go to the top of the page
 
+Quote Post
ishergin
сообщение May 10 2006, 19:56
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 16-06-05
Из: Оренбург
Пользователь №: 6 039



Вам надо изучить конечные автоматы, тогда будет легко делать подобные вещи или более сложные

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

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, так нагляднее...


--------------------
Программа выполнила невыполнимое и допустила недопустимое
Go to the top of the page
 
+Quote Post
BuTeK
сообщение May 11 2006, 18:37
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 67
Регистрация: 25-04-06
Из: Беларусь, Гомель
Пользователь №: 16 450



Всем спасибо!!! Действительно много нового узнал... И самое интересное, что такой оговорки при описании after нигде не встречал... Хотя часто встречал, что такое after применяют для избежания дребезга... И сейчас не могу понять от какого дребизга... при эмуляции дребезга ведь нет, а в реальную железку не запишется... или я что-то не так понимаю?!
А если ли внутренний генератор у Spartana 3? И программируется ли он? А то я раньше думал тоже программировать Clk спомощью after cool.gif
Go to the top of the page
 
+Quote Post
ishergin
сообщение May 11 2006, 19:46
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 130
Регистрация: 16-06-05
Из: Оренбург
Пользователь №: 6 039



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


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

Вот пример подавления дребезга для железки (например от кнопки, которая подключена к плис)
Прикрепленный файл  Debounce.rar ( 2.58 килобайт ) Кол-во скачиваний: 137


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

Удачи!


--------------------
Программа выполнила невыполнимое и допустила недопустимое
Go to the top of the page
 
+Quote Post
o-henry
сообщение May 12 2006, 06:29
Сообщение #14


Местный
***

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



Цитата(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
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 08:14
Рейтинг@Mail.ru


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