Перейти к содержанию

Не Работает Сдвиговый Регистр В Верилог


Leo

Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов 144
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Да но регистры заполняются не по сигналу С а на 230 ns разом первый становится третьим а четвертый заполняется на 470 так что результат не совсем правельный.

Ссылка на комментарий
Поделиться на другие сайты

Запускаю в программе GTKWave и результат выводится перевернутый на 230ns для трех регистров 1-3 а для четвертого потом а код был написан вывод по сигналу "c" 12 значений 3 значения четыре раза. У тебя что подругому?

Ссылка на комментарий
Поделиться на другие сайты

Добавил в тест бэнч перед данными не помогло картина меняется не существенно или подругому надо сделать а чем грозят задержки #? в коде тест бэнч.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Хочу развести плату для Альтеры но почитав монуал чесно говоря не очень понял у микросхемы должно быть питание. Входов там несколько питание ядра вроде не одно и также для генератора. Питание портов ввода-вывода выводы под JTAG или есть ещё что то где это лучше посмотреть вроде в квартус есть картинка портов а то после монуала каша пока.Если есть опыт подскажи.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Появились в коде не понятные задержки что то не понятно почему.

`timescale 1ns/1ns
module counter_uut(
   shift,
   clk,
   sr_in,
   rstn,
   sr_out1,
   sr_out2,
   sr_out3
);
input rstn;
input wire [7:0]sr_in;
input shift,clk;
output  [7:0]sr_out1,sr_out2,sr_out3;
reg[23:0]a;
reg[7:0]b1,b2,b3;
reg[7:0]s1,s2,s3,v1,v2,v3;
reg [1:0]counte=2'b0;
wire c;
always @(posedge clk or negedge rstn)
begin
if(!rstn) a <= 24'b0;
else a <= { a[15:0],sr_in };
end
always @(posedge clk)
begin
if(counte==2'd2)    counte <= 2'b0;
   else			    counte <= counte + 1'd1;
end
assign c= counte==2'd2;
always @(posedge clk)
if(c==1)
begin
  s1<=a[23:16];
  s2<=a[15:8];
  s3<=a[7:0];
if(s1>b1)
 v1<=s1-b1; 
 else
 v1<=b1-s1;
if(s2>b2)
 v2<=s2-b2;
 else
 v2<=b2-s2;
if(s3>b3)
 v3<=s3-b3;
 else
 v3<=b3-s3;

  end
endmodule

Тест бэнч

`timescale 1ns/1ns
module test();
reg rstn;
reg clk;
reg [7:0] sr_in;
initial
begin
   clk = 0;
   sr_in = 0;
   rstn = 0;
end

always
 #10 clk= ~clk;

wire[7:0]sr_out1,sr_out2,sr_out3;

counter_uut counter(
   .clk(clk),
   .rstn(rstn),
   .sr_in(sr_in),
   .sr_out1(sr_out1)
);


initial
begin
$dumpfile("out.vcd");
$dumpvars(-1, test);
$monitor($stime,, clk,,, sr_in,, sr_out1);
@(negedge clk);
rstn = 1;
@(posedge clk);
sr_in = 120;
@(posedge clk);
sr_in = 230;
@(posedge clk);
sr_in = 255;

@(posedge clk);
sr_in = 130;
@(posedge clk);
sr_in = 225;
@(posedge clk);
sr_in = 250;

@(posedge clk);
sr_in = 120;
@(posedge clk);
sr_in = 220;
@(posedge clk);
sr_in = 245;

@(posedge clk);
sr_in = 100;
@(posedge clk);
sr_in = 230;
@(posedge clk);
sr_in = 255;
@(posedge clk);
sr_in = 90;
@(posedge clk);
sr_in = 240;
@(posedge clk);
sr_in = 250;

@(posedge clk);
sr_in = 110;
@(posedge clk);
sr_in = 250;
@(posedge clk);
sr_in = 240;
#430$finish();
end
endmodule

Значения v1,v2,v3 выводятся не одновременно через несколько тактов сигнала С начинается разнобой подскажи в чем проблема.

Ссылка на комментарий
Поделиться на другие сайты

Переделал вот так вроде заработало не знаю так правельно

always @(c)
begin
if(c==1)
begin
  s1<=a[23:16];
  s2<=a[15:8];
  s3<=a[7:0];
end
begin
if(s1<b1)
v1<=b1-s1; 
 else
v1<=s1-b1;
if(s2<b2)
 v2<=b2-s2;
 else
 v2<=s2-b2;
if(s3<b3)
 v3<=b3-s3;
 else v3<=s3-b3;
 b1<=s1;
 b2<=s2; 
 b3<=s3;
  end
end

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...