|
Не работает конечный автомат!, Не работает конечный автомат!!!!!!!! |
|
|
|
Jan 22 2006, 22:19
|
Группа: Новичок
Сообщений: 4
Регистрация: 22-01-06
Пользователь №: 13 475

|
Вот написал автоматик:
mashine:process(clk) type TSS is (s0,s1,s2,s3,s4,s5,s6,s7,s8); variable SS:TSS:=s0; begin if clk='1' and clk'event then case SS is when s0=> SS:=s1; when s1=> SS:=s2; when s2=> SS:=s3; when s3=> SS:=s4; when s4=> SS:=s5; when s5=> SS:=s6; when s6=> SS:=s7; when s7=> SS:=s8; when s8=> SS:=s1; end case; end if; if SS=s8 then clk_out<='1'; else clk_out<='0'; end if; end process;
А Quartus мне и говорит: Warning: Can't display state machine states -- register holding state machine bit "|InBuffer|\mashine:SS.s0" was synthesized away В симуляции на clk_out вечный false, что за беда такая, может кто знает?
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 17)
|
Jan 23 2006, 08:28
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(LeshiySoft @ Jan 22 2006, 17:19)  Вот написал автоматик:
mashine:process(clk) type TSS is (s0,s1,s2,s3,s4,s5,s6,s7,s8); variable SS:TSS:=s0; begin if clk='1' and clk'event then case SS is when s0=> SS:=s1; when s1=> SS:=s2; when s2=> SS:=s3; when s3=> SS:=s4; when s4=> SS:=s5; when s5=> SS:=s6; when s6=> SS:=s7; when s7=> SS:=s8; when s8=> SS:=s1; end case; end if; if SS=s8 then clk_out<='1'; else clk_out<='0'; end if; end process;
А Quartus мне и говорит: Warning: Can't display state machine states -- register holding state machine bit "|InBuffer|\mashine:SS.s0" was synthesized away В симуляции на clk_out вечный false, что за беда такая, может кто знает? Проблема в том, что так КА не пишут !!!!!!!!! используйте двух процессное описание с сигналом сброса КА. скачайте XST.pdf в разделе №3 там прекрасно написанно как правильно писать КА. Желаю удачи
--------------------
|
|
|
|
|
Jan 23 2006, 08:42
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
1 не туда вставлен if SS=s8 then clk_out<='1'; else clk_out<='0'; end if; 2 нет сброса - что не есть гуд Итого имеем:
library IEEE; use IEEE.STD_LOGIC_1164.all;
entity state is port( clk : in STD_LOGIC; reset : in STD_LOGIC; clk_out : out STD_LOGIC ); end state;
--}} End of automatically maintained section
architecture state of state is begin mashine:process(clk,reset) type TSS is (s0,s1,s2,s3,s4,s5,s6,s7,s8); variable SS:TSS:=s0; begin if(reset='1') then SS:=s0; elsif clk='1' and clk'event then if SS=s8 then clk_out<='1'; else clk_out<='0'; end if; case SS is when s0=> SS:=s1; when s1=> SS:=s2; when s2=> SS:=s3; when s3=> SS:=s4; when s4=> SS:=s5; when s5=> SS:=s6; when s6=> SS:=s7; when s7=> SS:=s8; when s8=> SS:=s1; when others=>SS:=s0; end case; end if; end process; -- enter your statements here -- end state;
--------------------
Cogito ergo sum
|
|
|
|
|
Jan 23 2006, 08:42
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(LeshiySoft @ Jan 23 2006, 01:19)  Вот написал автоматик: xxxx А Quartus мне и говорит:xxxx В симуляции на clk_out вечный false, что за беда такая, может кто знает? Специально для ленивого, которому лень поискать. Там у них на сайте еще можно взять. Удачи!
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jan 23 2006, 08:45
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

|
Цитата(des00 @ Jan 23 2006, 10:28)  Проблема в том, что так КА не пишут !!!!!!!!! используйте двух процессное описание с сигналом сброса КА. скачайте XST.pdf в разделе №3 там прекрасно написанно как правильно писать КА.
Желаю удачи Ну не был бы я так категоричен в данном вопросе  Пишут так КА  Это называется полностью синхронный КА с регистровыми выходами. Несколько извращенный способ написания, но любители используют. К особенностям относится некоторая тормознутость реакции - 2 такта на реакцию на внешнее воздействие и полная синхронность выходов. Это все равно как в двухпроцессном описании поставить по регистру на каждый выход КА.
--------------------
WBR, V. Mirgorodsky
|
|
|
|
|
Feb 1 2006, 22:15
|
Группа: Новичок
Сообщений: 4
Регистрация: 22-01-06
Пользователь №: 13 475

|
Postoroniy_V, огромное человечское спасибо, что не поленился и все отлично с примером объяснил. Сделал так как ты писал - работает. А по поводу счетчика и сдвигового регистра согласен, но мне хотелось узнать о создании конечного автома на VHDL вообще а не для данного примера. В AHDL все было как-то проще и конкретно: TSS.reset = reset; TSS.clk = clk; и всего делов ясно понятно и просто, хотя это наверное дело привычки!
|
|
|
|
|
Feb 2 2006, 08:20
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(LeshiySoft @ Feb 2 2006, 01:15)  Postoroniy_V, огромное человечское спасибо, что не поленился и все отлично с примером объяснил. Сделал так как ты писал - работает. А по поводу счетчика и сдвигового регистра согласен, но мне хотелось узнать о создании конечного автома на VHDL вообще а не для данного примера. В AHDL все было как-то проще и конкретно: TSS.reset = reset; TSS.clk = clk; и всего делов ясно понятно и просто, хотя это наверное дело привычки! обращайтесь тогда с вопросом о книгах о VHDL на фтп такие книги есть
--------------------
Cogito ergo sum
|
|
|
|
|
Feb 9 2006, 08:58
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(Gorby @ Feb 8 2006, 15:37)  Люди добрые, чего вы паритесь?!
Ставим ActiveHDL и имеем щастье. Там есть превосходный графический редактор стейт-машин (ага, с зелеными кружочками и стрелочками). А потом он генерирует VHDL - исходник для нарисованной машины. Причем способ кодирования можно задать от ван-хот до Грэя. Внимательно изучаем полученный код - он 100% рабочий. А вот уже через пол-года начнем и свои машины руками писать. Самое смешное, что они тоже начнут работать...
А при отладке-то!!!! Оно показывает на диаграмме с зелеными кружочками-состояниями текущее активное состояние!!! Всем рекомендую. А то устроили, понимаешь, балаган... А потом ракеты до Марса не... Уважаемый, а вы прочитали весь тред? причем тут ActiveHDL? был разве вопрос про него(ActiveHDL )?
--------------------
Cogito ergo sum
|
|
|
|
|
Feb 10 2006, 07:40
|

МедвеД Инженер I
   
Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951

|
Цитата(Gate @ Feb 9 2006, 18:23)  Я совершенно согласен с Gorby - писать вручную стэйт-машины неразумно, разве только в образовательных целях. Попробуйте-ка написать sm на полсотни состояний, а потом вернутся к ней через месяц для редизайна - фиг разберетесь. Я использую менторовский hdldesigner (не только для sm, а как интегратор проектов) - рекомендую. равносильно сравнению - "как лучше вводить проект? схемный ввод или HDL?" хочется рисовать? да ради бога! 50 состояний нарисовать - это не хухры мухры а "вручную" ввести(нерисовать) куда проще, я так думаю.
--------------------
Cogito ergo sum
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|