|
|
  |
Помощь новечку, Помоги новичку с VHDL |
|
|
|
May 4 2006, 17:44
|
Участник

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

|
Недавно начал пробывать программировать на VHDL. И у меня случилась такая беда: не получается написать программу которая бы посылала по одной восьмибитной шине станачало первый байт затем после 10нс второй байт. Помогите кто знает... И ещё вопрос имеется кабель JTAG для программирования сигнального процессора TI подойдёт ли он к программирыванию Spartana 3?
|
|
|
|
|
May 4 2006, 19:00
|

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

|
Цитата(BuTeK @ May 4 2006, 21:44)  Недавно начал пробывать программировать на VHDL. И у меня случилась такая беда: не получается написать программу которая бы посылала по одной восьмибитной шине станачало первый байт затем после 10нс второй байт. Помогите кто знает... А Вы потрудились прежде чем начать заниматься практическим освоением VHDL освоить теоретическую часть? Книжки и т.п.? Цитата И ещё вопрос имеется кабель JTAG для программирования сигнального процессора TI подойдёт ли он к программирыванию Spartana 3? Для стандартных программ загрузки прошивок ответ - нет.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
May 5 2006, 07:32
|

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

|
Цитата(BuTeK @ May 4 2006, 20:44)  не получается написать программу которая бы посылала по одной восьмибитной шине станачало первый байт затем после 10нс второй байт. Помогите кто знает... "не получается" - это как? Написали код в VHDL, а он не работает? Тогда код приведите-поправим. Или вообще непонятно как на VHDL писать? Тогда читайте книжки.
|
|
|
|
|
May 5 2006, 17:35
|
Участник

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

|
Цитата(KykyryzzZ @ May 5 2006, 10:46)  Скачайте ieee1076 vhdl 2000, там все понятно написано и в примерах, многие вопросы сами отпадут. Если не найдете могу прислать, вроде валялся где-то. Скинь мне на мыло (butek@server.by) если не сложно. Зарание большое спасибо.. ;-)
|
|
|
|
|
May 5 2006, 17:52
|
Участник

Группа: Новичок
Сообщений: 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;
|
|
|
|
|
May 5 2006, 18:38
|

Гуру
     
Группа: Админы
Сообщений: 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 В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
May 5 2006, 19:16
|

Местный
  
Группа: Свой
Сообщений: 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;
|
|
|
|
|
May 10 2006, 19:56
|
Частый гость
 
Группа: Свой
Сообщений: 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; надеюсь пример поможет понят работу, засуньте его в симулятор какой нибудь  , так нагляднее...
--------------------
Программа выполнила невыполнимое и допустила недопустимое
|
|
|
|
|
May 11 2006, 18:37
|
Участник

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

|
Всем спасибо!!! Действительно много нового узнал... И самое интересное, что такой оговорки при описании after нигде не встречал... Хотя часто встречал, что такое after применяют для избежания дребезга... И сейчас не могу понять от какого дребизга... при эмуляции дребезга ведь нет, а в реальную железку не запишется... или я что-то не так понимаю?! А если ли внутренний генератор у Spartana 3? И программируется ли он? А то я раньше думал тоже программировать Clk спомощью after
|
|
|
|
|
May 11 2006, 19:46
|
Частый гость
 
Группа: Свой
Сообщений: 130
Регистрация: 16-06-05
Из: Оренбург
Пользователь №: 6 039

|
Цитата(BuTeK @ May 12 2006, 00:37)  Всем спасибо!!! Действительно много нового узнал... И самое интересное, что такой оговорки при описании after нигде не встречал... Хотя часто встречал, что такое after применяют для избежания дребезга... И сейчас не могу понять от какого дребизга... при эмуляции дребезга ведь нет, а в реальную железку не запишется... или я что-то не так понимаю?! А если ли внутренний генератор у Spartana 3? И программируется ли он? А то я раньше думал тоже программировать Clk спомощью after  Генератора нету, вам надо будет использовать внешний генератор, зато есть блок умножения частоты на 2. В литературе по Verilog/VHDL обычно указываются какие конструкции языка являются синтезируемыми. Вот пример подавления дребезга для железки (например от кнопки, которая подключена к плис)
Debounce.rar ( 2.58 килобайт )
Кол-во скачиваний: 137 ЗЫ. постарайтесь найти нармальную литературу  Удачи!
--------------------
Программа выполнила невыполнимое и допустила недопустимое
|
|
|
|
|
May 12 2006, 06:29
|

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

|
Цитата(BuTeK @ May 11 2006, 21:37)  А если ли внутренний генератор у Spartana 3? И программируется ли он? А то я раньше думал тоже программировать Clk спомощью after  Встроенного генератора нет. Нужно подключать внешний генератор. Внутри спартана есть модули 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
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|