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

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


Leo

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

Что откуда и куда не передаётся? И почему к выходам qw0 и qw1 подключен один и тот же сигнал?

И называй регистры и провода более осмысленно пожалуйста, а то читать невозможно.

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

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

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

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

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

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

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

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

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

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

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

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

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

Во-первых, нельзя на выводы вешать один и тот же сигнал. И перед этим s и d надо объявить в верхнем модуле.

Во-вторых, ты объявляешь reg [7:0]a;, а потом используешь a[15:8] - как ты себе это представляешь?

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

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

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

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

Это не один сигнал ты писал что регистр разбивается например a[7:0] принадлежит qw0 a[15:8]принадлежит qw1 когда сигналы поступают из блоков qw0 и qw1 я тогда специально этот вопрос задавал я так понял.Сигналы s и d как выходные объявить верхнем модуле.Но reg [7:0]a я хотел брать из модуля qw0 и qw1 вынес чито для опредиления что б компилятор не ругался.

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

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

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

Прямо так и выводи. Сделай выход "а", сделай output a, и сделай reg a. Естественно нужной тебе разрядности.

А имел в виду я вот что. Смотри, у тебя модули qw0 и qw1 имеют выход s. Ты к этому выходу подключаешь один провод s. И получается неоднозначность, неясно из какого модуля всё же сигнал будет приходить на провод s.

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

Да я про тоже индекс к s но если я назову s1 то наверное не смогу в цикле нумеровать. Может вот так s[индекс] надо.

coud qw0(
	 .rty(c),
	 .clk(clk),
	 .asd(sr[2]),
	 .s(s),
	 .d(d),
	 .a2(a)       //Вот я прописываю порт регистра а и переименовываю в а2
);
coud qw1(	    //А компилятор пишет error: port ``a2'' is not a port of qw1.
	 .rty(c),
	 .clk(clk),
	 .asd(sr[1]),
	 .s(s),
	 .d(d),
	 .a1(a)	 //Вот я прописываю порт регистра а и переименовываю в а1
);
reg [15:0] a;
reg [7:0] g;
reg [7:0] j;
always @(a[7:0],a[15:8])
begin
g<=a[7:0];
j<=a[15:8];
end
initial
$monitor($stime,, shift,, clk,,,sr_out,sr_out1, sr_in );
endmodule
module coud (
rty,
clk,
asd,
s,
d,
a										  // И здесь добавил а
);
input rty,clk;
input wire [7:0]asd;
output reg s,d;				   //Здесь требуется почему то писать регистр
reg [7:0] v= 8'h45;
output reg [7:0] a;			 //Здесь добавил регистру output
always @ (posedge clk)
if(rty==1)
begin
if(v>asd)
a <= v-asd;

Что то не так?

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

Переделал но на регист он ругается

coud qw0 Port 6 (a) of coud expects 8 bits, got 1. : Padding 7 high bits of the port.

coud qw1 : warning: Port 6 (a) of coud expects 8 bits, got 1. : Padding 7 high bits of the port.

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

Фу но было сказано что регистр а надо объявить как 15:0 что бы обработать из двух разных модулей регистры а это был твой совет.

reg [15:0] a;
reg [7:0] g;
reg [7:0] j;
always @(a[7:0],a[15:8])
begin
g<=a[7:0];
j<=a[15:8];

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

Хорошо выходящии сигналы 8 бит wire их надо объединить или как описать после выхода из модуля что не так описано в преведённом ранее коде параметры не передаются.

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

Приведи ещё раз исправленный код полностью и скажи что, откуда и куда ты хочешь передать.

Не называй их пожалуйста "параметрами", так как это всё "сигналы", а параметры задаются ключевым словом parameter

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

Но код я же привел. Я подключаю два модуля coud qw0, qw1 и решаю вывести для опыта сигнал а регистр получая два сигнала а с двух модулей coud qw0, qw1 дальше пытаюсь переслать в регистр j,g always @(a[7:0],a[15:8]) что не получается как сделать правельнее в этом случае?

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

Объяви wire [15:0] a;

В первом модуле подключи первую его часть: .a(a[7:0]),

Во втором - вторую часть: .a(a[15:8]),

Дальше уже записывай содержимое a в j и g.

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

Да стало понятней но не очень понятно с индексами портов .a(a1) так нумеруются отдельные сигналы и при это а1 становится опять а для обоих модулей что это перевод а1 а2 в один регистр а с двумя битами.

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

В каком "в этом"?

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

А называть сигналы ты можешь как угодно, хоть a, хоть a1.

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

Вот это локаничность в двух строках ответ что и хотел узнать но есть сразу вопрос можно ли так .а(а[1]) не знаю как лучше объяснить. Нумеровать сигнал в цикле без указания [7:0] как нумерация массива sr[1] для большого количества повторений.

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

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

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

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

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

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

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

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

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

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

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

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