Jump to content
g614380

Проблема Создания Временных Диаграмм В Modelsim

Recommended Posts

Доброго всем дня уважаемые коллеги!

Не так давно начал освоение ПЛИС на языке Verilog. Пишу в Quartus2 9.0. Описывал простенькие модули и симулировал прямо в квартусе, в его встроенном симуляторе построения диаграмм.

Тестбенчи сам никогда еще не писал. Но вот решил что пришло время и нужно осваивать Modelsim.

Кое что нарыл в интернете, а точнее последовательность действий, которые описывают каким образом подкрепить тестируемый модуль и сам тестбенч в Modelsim прям из квартуса.

Тестбенч и модуль взял готовый описанный в одной из статей:

module counter (

input wire reset,

input wire clk,

input wire [7:0]wdata,

input wire wr,

output reg [7:0]data

);

always @ (posedge clk or posedge reset)

if (reset)

data <= 8'h00;

else

if(wr)

begin

data <= wdata;

$display("written %h",wdata);

end

else

data <= data + 8'h01;

endmodule

собственно модуль

module test_counter;

reg reset, clk, wr;

reg [7:0]wdata;

wire [7:0] data_cnt;

//устанавливаем экземпляр тестируемого модуля

counter counter_inst(reset, clk, wdata, wr, data_cnt);

//моделируем сигнал тактовой частоты

always

#10 clk = ~clk;

//от начала времени...

initial

begin

clk = 0;

reset = 0;

wdata = 8'h00;

wr = 1'b0;

//через временной интервал "50" подаем сигнал сброса

#50 reset = 1;

//еще через время "4" снимаем сигнал сброса

#4 reset = 0;

//пауза длительностью "50"

#50;

//ждем фронта тактовой частоты и сразу после нее подаем сигнал записи

@(posedge clk)

#0

begin

wdata = 8'h55;

wr = 1'b1;

end

//по следующему фронту снимаем сигнал записи

@(posedge clk)

#0

begin

wdata = 8'h00;

wr = 1'b0;

end

end

и тестбенч к нему.

Все это подгрузил в Modelsim, ошибок при этом никаких не выдало, но вот диаграммы почему то не построились.

Может кто подскажет в чем ошибка и куда рыть. Или ссылочку на хорошую статейку или книгу.

Всем заранее спасибо!

Share this post


Link to post
Share on other sites

1 Ставьте соответствие между сигналами в вашем модуле с сигналами из тестбенча.

2 в блоке initial begin задаются только начальные значения сигналов. блокам always @ там совершенно не место.

3 если тебе необходимо чередовать значения wr, wrdata предлагаю завести регистр, который по положительному фронту сигнала clk будет инкреметироваться. Получится, что данный регистр будет равен либо 1 либо 0. В зависимости от этого ставите условия чему должны быть равны wr, wdata.

Простите писать не очень удобно...

`timescale 1ns / 1ps

module test_counter;
// Inputs
reg reset;
reg clk;
reg [7:0] wdata;
reg wr;
// Outputs
wire [7:0] data;
// Instantiate the Unit Under Test (UUT)
counter_cxem_net uut (
 .reset(reset),
 .clk(clk),
 .wdata(wdata),
 .wr(wr),
 .data(data)
);
initial begin
 // Initialize Inputs
 reset = 0;
 clk = 0;
 wdata = 0;
 wr = 0;




 //через временной интервал "50" подаем сигнал сброса
   #50 reset = 1;
 //еще через время "4" снимаем сигнал сброса
   #4 reset = 0;
 //пауза длительностью "50"
 end // initial begin



   always @(posedge clk)
   begin
   wdata = 8'h55;
   wr = 1'b1;
   end


 always
  begin
  #5 clk=!clk;
  end
endmodule

Edited by krend

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.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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.

Loading...

  • Сообщения

    • можно решить установкой высокотоковых аккумуляторов, и конденсаторов на выходе?
    • Не верь. То что ты нафоткал не говорит вообще ни о чем. Ну кроме того, что люди так себе строителя. Особенно доставил пеноплекс поверх газосиликата.
    • https://www.radiolibrary.ru/reference/transformers-tpp/tpp323.html   как соединить выводы чтобы получить  20-0-20 вольт в паралель ?
    • Всем доброго времени суток! Так сложились обстоятельства что мне нужен ИБП  и поэтому я нашел 3 варианта: самый дорогой - покупка нового ИБП; более бюджетный - покупка б/у ИБП (философия фраз "кот в мешке", "скупой платит дважды" и т.д. мне знакома); надеяться на чудо - отремонтирую что достался мне. Исходя из того, что получится с последним вариантом, я буду решать что дальше. А достался мне "мертвый" APC Smart-UPS 700. Что помнит хозяин данного девайса: при попытке извлечь батареи, болтик от корпуса закатился под плату индикации на лицевой панели. ИБП печально моргнул индикацией и последний раз щелкнул реле... Разобрал, почистил от пыли, провел осмотр на механические повреждения: ничего не вздуто, нет сгоревших элементов и пломбы на болтах платы целые. Так же пытался найти следы на плате индикации:  ни подгорелых дорожек, ни копоти на плате. Прозвонил вход и выход сетевого напряжения на КЗ - отсутствует. К клеймам, куда подключаются аккумуляторы, подсоединил лабораторный блок питания с напряжением 5 В и 0.5 А. Постепенно повышая напряжение до 24 В потребление тока оставалась на нуле, заряжался только жирный электролит С22. Далее по схеме я решил проверить стабилизаторы (IC4, IC5) на них отсутствовало напряжение, виной оказался сгоревший предохранитель F3. Снова подав напряжение ИБП ожил, щелкнули реле, моргнула индикация, подав кратковременный писк. В таком состоянии, при напряжении 24В , ток был 0.8 А... уж очень много. Проверил контрольные напряжения, все как положено с небольшими отклонениями: +24, +12, +5 и -8. Нагрелись стабилизаторы (IC4, IC5), резисторы панели индикации (R167, R154, R138, R168) и микросхема IC2. Со стабилизаторами все и так ясно: они разницу потенциалов превращают в тепло, а вот резисторы и микросхема... Погуглив микросхему и узнав, что это преобразователь логических уровней, решил ее выпаять. Ток потребления от "батарей" упал до 0.2 А. С проблемой нагрева резисторов не смог разобраться т.к. это оказалось интересное схемотехническое решение - шунтирование светодиодов, когда они не показывают индикацию. "Мозг" ИБП живой. Проверил это подключив UART-USB к выводам 3 и 14 на плате, где стояла сгоревшая IC2, отправил команду "Y" и ответ "SM". Вернув плату на место я решил проверить на холодный запуск. Питая по прежнему от ЛБП я произвел холодный старт зажав кнопку "Тест 1" на панели. Старт прошел без проблем, на выходе 235 В. Проверить синус увы не могу. Отключив ЛБП я подключил его к сети. Ничего не произошло и не реагирует на кнопки, а на клеймах аккумулятора 0. Прикупив пару аккумуляторов, подключил снова к сети 220, появилась зарядка батарей. Полностью включив ИБП, убедился что на выходе 220 и отключив внешнее питание, он переходит в режим работы от батарей без проблем и просадок на выходе. Затем я откалибровал ИБП через фирменную утилиту APC.  Затем я решил протестировать его, прежде чем буду использовать. На этом этапе и возникли "странности". Если выключить и отключить от сети ИБП то, примерно, раз в пол часа происходит кратковременный писк. Соответственно вопросы: В чем может быть еще неисправность? Можно ли ее устранить? Есть ли возможность исправить проблему с разрядом батарей? когда ИБП отключен от сети, он продолжает кушать 0.2....0.5 А (шунт из резисторов и стабилизаторы, возможно что то еще) apc_ups_450_620_700.pdf
    • А за что отвечает этот переключатель? 
×
×
  • Create New...