Jump to content
    

Использование dual edge clk

ну как сказать... :) некоторым и воды попить невыносимо:)...

 

 

делается так (xilinx ise)

1. Делаете какой-то модуль с входами и выходами

2. Жмете добавить модуль и там выбираете verilog test fixture как тип модуля, потом он спросит чего тестировать, выбираете ваш первый верилог модуль.

3. После этого идете на закладку simulation (там есть выпадающийсписок синтез - симуляция)

4. В созданном файле пишите тестовое действие типа

 

forver begin
   clk = ~clk;
   #5;
   end;

 

это делает клок с периодом 10 нСек. таким же макаром описываете остальные сигналы #N - задержка между действиями. Я обычно клок оставляю в одном блоке initial, чтобы он в forevere крутился, а остальные сигналы в копии initial уже последовательно друг за другом через паузы #N

 

Создав все тестовые воздействия, жамкаете там где раньше было синтезить проект в режиме симуляции там находиться симулить, жамкается, если никаких ошибок нет то создастся файл, запуститься моделсим и получите времянки и счастие!

 

 

Не симулируется... Какаято ошибка странная ERROR:Simulator:776 - Signal SIGSEGV received

 

Share this post


Link to post
Share on other sites

Не симулируется... Какаято ошибка странная ERROR:Simulator:776 - Signal SIGSEGV received

Вы меня не перестаете удивлять...

Клоки в симуляции не генерятся?

Ведь я все написал в "Кратком Курсе" про тестбенчи, и тестовые примеры и картинки Моделсима... Как говорится - "взял и прочел"...

Так нет же, мучаете Голикова по ерунде какой-то... И уже столько времени, что за это время главу про работу с МоделСимом можно было 5 раз прочитать...

 

Share this post


Link to post
Share on other sites

Вы меня не перестаете удивлять...

 

Это-же хорошо =) Как говорится глупых вопросов не бывает.

 

Клоки в симуляции не генерятся?

Ведь я все написал в "Кратком Курсе" про тестбенчи, и тестовые примеры и картинки Моделсима... Как говорится - "взял и прочел"...

Так нет же, мучаете Голикова по ерунде какой-то... И уже столько времени, что за это время главу про работу с МоделСимом можно было 5 раз прочитать...

 

Вообще что-бы я не прописывал в тестбенче, какие-бы "Add stimulus" не ставил появляется все время одна и та же ошибка -> ERROR:Simulator:776 - Signal SIGSEGV received

На форуме Xilinx-а я не нашел однозначного ответа. Что-то типа бага.

Share this post


Link to post
Share on other sites

Вообще что-бы я не прописывал в тестбенче, какие-бы "Add stimulus" не ставил появляется все время одна и та же ошибка -> ERROR:Simulator:776 - Signal SIGSEGV received

На форуме Xilinx-а я не нашел однозначного ответа. Что-то типа бага.

Я же предлагал Вам показать прямо в скайпе как делается симуляция... Помнится, Вы отказались. Или я не прав?

Share this post


Link to post
Share on other sites

Не симулируется... Какаято ошибка странная ERROR:Simulator:776 - Signal SIGSEGV received

Это ж что нужно запустить там такого, чтобы симулятор ошибку сегментации схватил?.. :biggrin:

Share this post


Link to post
Share on other sites

Я же предлагал Вам показать прямо в скайпе как делается симуляция... Помнится, Вы отказались. Или я не прав?

 

Не было такого =))

Share this post


Link to post
Share on other sites

Правильно ли я применил ODDR2 примитив?

 

ODDR2 #(
      .DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1" 
      .INIT(1'b0),    // Sets initial state of the Q output to 1'b0 or 1'b1
      .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset
   ) ODDR2_inst1 (
      .Q(data[0]),   // 1-bit DDR output data
      .C0(clk),   // 1-bit clock input
      .C1(~clk),   // 1-bit clock input
      .CE(CE), // 1-bit clock enable input
      .D0(emacphytxd[0]), // 1-bit data input (associated with C0)
      .D1(emacphytxd[4]), // 1-bit data input (associated with C1)
      .R(R),   // 1-bit reset input
      .S(S)    // 1-bit set input
   );

 

Такое описание ~clk для 180 градусов направленного клока годится? А на CE я прописал wire CE; assign CE = 1;

Share this post


Link to post
Share on other sites

Такое описание ~clk для 180 градусов направленного клока годится? А на CE я прописал wire CE; assign CE = 1;

Какая у вас частота клока? вообще все частоты лучше делать через PLL/DCM + есть специальные примитивы, которые позволяют управлять клоками, если так надо. Прямые операции с клоковым сигналом крайне нежелательны.

Share this post


Link to post
Share on other sites

Какая у вас частота клока? вообще все частоты лучше делать через PLL/DCM + есть специальные примитивы, которые позволяют управлять клоками, если так надо. Прямые операции с клоковым сигналом крайне нежелательны.

 

У меня клок 125mhz. Получается путем использования Xilinx Clocking Wizard из 40 mhz на плисине.

Share this post


Link to post
Share on other sites

У меня клок 125mhz. Получается путем использования Xilinx Clocking Wizard из 40 mhz на плисине.

Ну и сделайте сразу 2 клока с разностью фаз в 180 градусов. А писать

( ~clk )

нельзя. Операции с высокочастотными клоками допускаются только с применением специальных примитивов.

Share this post


Link to post
Share on other sites

Ну и сделайте сразу 2 клока с разностью фаз в 180 градусов. А писать

( ~clk )

нельзя. Операции с высокочастотными клоками допускаются только с применением специальных примитивов.

 

Действительно, так будет убедительнее.

Share this post


Link to post
Share on other sites

Не было такого =))

ОК! Предлагаю...

Рабочий стол сейчас и в скайпе можно показывать....

 

Share this post


Link to post
Share on other sites

Ну и сделайте сразу 2 клока с разностью фаз в 180 градусов. А писать

( ~clk )

нельзя. Операции с высокочастотными клоками допускаются только с применением специальных примитивов.

В данном конкретном случае можно. В примитиве OSERDES2 внутри на обоих клоковых входах есть инверторы с мультиплексором обхода.

Это можно посмотреть в XDE.

 

Share this post


Link to post
Share on other sites

И если написать так, то он автоматически их задействует и не будет ставить доп логику в клоковый путь?

Share this post


Link to post
Share on other sites

ОК! Предлагаю...

Рабочий стол сейчас и в скайпе можно показывать....

 

Надобность в симуляции уже отпала. Я правильно применил ODDR2 примитив и у меня правильно дата стала преобразовываться из 8 битной шины в 4-х битную для RGMII. А проверил я это осциллографом.

Появилась новая проблема и очень странная.

Если я компилирую весь проэкт (синтезис) а дату которая должна идти на PHY биндю (в ucf) на диоды то MAC пропускает все данные которые я ему на вход педалю.

!!!А если я дату биндю на ножки PHY (собственно как и нужно) то MAC не пропускает дату которую я ему на вход отдаю. Отдает только преамбулу и Pad с FCS.

Что за странная вещь???

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...