|
|
  |
Вопрос по SignalTape |
|
|
|
Dec 1 2010, 06:30
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Привет... Создал RS-latch, используя MegaWizard, далее подключил в свой проекты. На выходные ножки ПЛИС вывел сигналы s (set), r(reset), q(quit). CODE l: lp port map ( aclr => not r, aset => not s, data => '0', gate => '0', q => q ); Далее подключил SignalTape и добавил туда ранее описанный сигналы. Вопрос такой: почему в SignalTape рисуется спад q раньше спада r?
Прикрепленные файлы
s.bmp ( 835.67 килобайт )
Кол-во скачиваний: 40
--------------------
С Уважением...
|
|
|
|
|
Dec 1 2010, 11:03
|
Местный
  
Группа: Свой
Сообщений: 305
Регистрация: 22-06-07
Из: Санкт-Петербург
Пользователь №: 28 617

|
Цитата(Fynjisx @ Dec 1 2010, 09:30)  CODE l: lp port map ( aclr => not r, aset => not s, data => '0', gate => '0', q => q ); имхо: не понятно ни чего ( "aclr" больше или равен "not r" ? кто такой "port" и "map"? и что за язык? подозреваю, что Signal Tape это Signal Tap и остальные ошибки надо искать в синтаксисе)
|
|
|
|
|
Dec 1 2010, 11:52
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Цитата(yura-w @ Dec 1 2010, 15:03)  имхо: не понятно ни чего ( "aclr" больше или равен "not r" ? кто такой "port" и "map"? и что за язык? подозреваю, что SignalTape это SignalTap и остальные ошибки надо искать в синтаксисе) это я привел кусок кода на VHDL, как я подключил модуль RS-защелку в проекте. aclr не больше или равен, а соединен напрямую с инвертированным r(reset).
--------------------
С Уважением...
|
|
|
|
|
Dec 1 2010, 12:28
|
Местный
  
Группа: Свой
Сообщений: 305
Регистрация: 22-06-07
Из: Санкт-Петербург
Пользователь №: 28 617

|
Цитата(Fynjisx @ Dec 1 2010, 14:52)  это я привел кусок кода на VHDL, как я подключил модуль RS-защелку в проекте. aclr не больше или равен, а соединен напрямую с инвертированным r(reset).  Извиняюсь, был не внимателен. думаю поможет следующее: data => '1' gate => '1'
|
|
|
|
|
Dec 1 2010, 16:07
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Цитата(yura-w @ Dec 1 2010, 16:28)   Извиняюсь, был не внимателен. думаю поможет следующее: data => '1' gate => '1' Щас обьясню что я делаю. У меня есть автомат на 3 состояния: st0, st1, st2. При подаче rst(сброс), автомат переходит в состояние st0. Вот его код: CODE entity tops is
Port ( clk : in std_logic; in1 : in std_logic; rst : in std_logic; out1 : out std_logic ); end tops;
architecture Behavioral of tops is
type fsm is (st0, st1, st2);
signal st, nst: fsm:= st0; begin
process(clk) begin if rst = '0' then st <= st0; elsif rising_edge(clk) then st <= nst; end if; end process;
process(all) begin case st is when st0=> nst <= st1; out1 <= '1'; when st1=> if in1 = '1' then nst <= st2; else nst <= st1; end if; out1 <= '0'; when st2=> nst <= st2; out1 <= '0'; end case;
end process;
Мне нужно подать внешний сброс (rst) на этот автомат. У меня есть плата с помощью которой я это намеревался сделать. Единственный вопрос возник как избавиться от дребезга контактов. ДЛя это я придумал не хитрую RS-защелку. Причем на плате разведено так, что по умолчанию на ножки плис, которые я использую в качестве контактов кнопки, подходят подтянутые высокие уровни. Т.е для перключения мне нужны активные низкие уровни. Отсюда и RS-защелка с инвертированными входами R и S. Далее я хотел вывести все сигналы через SignalTap, затем нажать на мою кнопку и увидеть как меняются состояния и выходные сигналы автомата. ВСя запарка произошла из-за того, чтопри подаче активного низкого уровня на r или s защелки, в SignalTap я увидел что раньше меняется её выход(который у меня обозначе как q). Векторная диаграмма приложена в первом сообщении моего топика...
--------------------
С Уважением...
|
|
|
|
|
Dec 1 2010, 21:05
|
Местный
  
Группа: Свой
Сообщений: 305
Регистрация: 22-06-07
Из: Санкт-Петербург
Пользователь №: 28 617

|
Цитата(Fynjisx @ Dec 1 2010, 19:07)  ... Единственный вопрос возник как избавиться от дребезга контактов. ДЛя это я придумал не хитрую RS-защелку. для избавления от дребезга обычно используют счетчик, считающий например до 10ms, в зависимости от кнопки (в вашем случае низкий - разрешение счета, высокий - сброс счетчика в ноль, если счетчик досчитал до конца - это и есть сигнал чистый от дребезга) Цитата(Fynjisx @ Dec 1 2010, 19:07)  ....ВСя запарка произошла из-за того, чтопри подаче активного низкого уровня на r или s защелки, в SignalTap я увидел что раньше меняется её выход(который у меня обозначе как q). Векторная диаграмма приложена в первом сообщении моего топика... входные сигналы, тем более с дребезгом, не используют без стробирования для асинхронных сброса или установки. если длительность входных сигналов меньше (в вашем случае это практически гарантированно) тактовой частоты используемой в signaltap, то на временной диаграмме вы и не увидите их изменение, что и видно на вашей картинке
|
|
|
|
|
Dec 5 2010, 05:54
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Цитата(yura-w @ Dec 2 2010, 01:05)  для избавления от дребезга обычно используют счетчик, считающий например до 10ms, в зависимости от кнопки (в вашем случае низкий - разрешение счета, высокий - сброс счетчика в ноль, если счетчик досчитал до конца - это и есть сигнал чистый от дребезга) хорошо, но тогда получается, что сигнал "Count Enable" я должен подавать от той же кнопки, которая у меня дребезжит. И получается, что счетчик у меня в течении дребезга, сам будет "дребезжать".
--------------------
С Уважением...
|
|
|
|
|
Dec 5 2010, 20:05
|
Местный
  
Группа: Свой
Сообщений: 305
Регистрация: 22-06-07
Из: Санкт-Петербург
Пользователь №: 28 617

|
что значит Цитата(Fynjisx @ Dec 5 2010, 08:54)  сам будет "дребезжать" , хотя это и не важно повторюсь (перечитайте пост): для избавления от дребезга обычно используют счетчик, считающий например до 10ms, в зависимости от кнопки (в вашем случае низкий - разрешение счета, высокий - сброс счетчика в ноль, если счетчик досчитал до конца - это и есть сигнал чистый от дребезга). т.е. достаточно одного сигнала, когда он переключается в диапазоне менее 10ms счетчик сбрасывается (если угодно - значение счета "дребезжит"), если длительность сигнала более 10ms , то счетчик досчитал и на выходе получаем сигнал свободный от дребезга (если время выбрано правильно) например на verilog это как-то так Код reg [31:0] cnt_srt; reg get_str; wire end_cnt_rst = 'h_ffff; always @(posedge clk) begin if ( rst) begun cnt_srt <= 0; get_str <= 0; end else begin if ( cnt_srt < end_cnt_rst) cnt_srt <= cnt_srt + 1; else get_str <= 1; end end на rst подайте сигнал с дребезгом (при низком rst - счетчик начинает считать), get_str равен высокому при наличии входного сигнала (в данном случае низкого входного сигнала) свободного от дребезга
|
|
|
|
|
Dec 7 2010, 10:42
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Цитата(yura-w @ Dec 5 2010, 23:05)  если угодно - значение счета "дребезжит", да, я это просто назвал по другому))) Главное я понял что к чему)) Спасибо... Ещё одна проблемка... Есть fsm: CODE process(clk) begin if rst_i = '1' then st <= st0; elsif rising_edge(clk) then st <= nst; end if; end process;
process(all) begin case st is when st0=> nst <= st1; when st1=> if rdy = '1' then nst <= st2; else nst <= st1; end if; when st2=> nst <= st2; when others=> nst <= st2; end case; end process;
rst_i - это сигнал от моей кнопки, уже через счетчик. Т.е нажимаю на кнопку, запускается счетчик, отсчитывает 10ms и утсанавливает rst_i. Так вот, как мне в SignalTap подловить только изменения состояния автомата?
--------------------
С Уважением...
|
|
|
|
|
Dec 7 2010, 13:52
|
Местный
  
Группа: Свой
Сообщений: 305
Регистрация: 22-06-07
Из: Санкт-Петербург
Пользователь №: 28 617

|
Цитата(Fynjisx @ Dec 7 2010, 13:42)  ....Так вот, как мне в SignalTap подловить только изменения состояния автомата? если частота сигналтапа и автомата это одно и тоже, тогда можно только вывести состояния автомата и смотреть их, а не изменения. если частота сигналтапа в больше частоты автомата (лучше более чем в два раза, чтоб не возиться с синхронизацией), то можно извратиться добавив в автомат сигнал с комбинационной логикой но зачем? Может стоит потратить время и обратиться к средствам моделировования, например modelsim. это гораздо удобнее...
|
|
|
|
|
Dec 9 2010, 15:12
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Цитата(yura-w @ Dec 7 2010, 16:52)  Может стоит потратить время и обратиться к средствам моделировования, например modelsim. это гораздо удобнее...  Я сначало так и сделал - всё отладил в MOdelSim. Ну а потом уже захотел посмотреть, что такое SignalTap и с чем его едят. Так что особо не взыщите, если вопросы покажутся кое-где глуповатыми) Мне б толковую литературу по SignalTap найти, с примерами - было б хорошо. Но оную не нашел, поэтому пытаюсь здесь спросить)
Сообщение отредактировал Fynjisx - Dec 9 2010, 15:14
--------------------
С Уважением...
|
|
|
|
|
Feb 15 2012, 05:38
|
студент
   
Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712

|
Почему в режиме Transition,когда у меня убраны галки в полях address и writedate захват все равно по ним происходит??? Тактовая частота с3 - 400MHz...
Эскизы прикрепленных изображений
--------------------
С Уважением...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|