Например TDA7294

Форум РадиоКот • Просмотр темы - вопрос по верилогу
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Пт янв 24, 2020 07:51:08

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: вопрос по верилогу
СообщениеДобавлено: Чт май 17, 2018 11:51:24 
Потрогал лапой паяльник

Зарегистрирован: Пт фев 08, 2008 13:46:03
Сообщений: 327
Откуда: Воронеж
Рейтинг сообщения: 0
Есть регистр из 60 бит, шина на 60 линий, и один регистр (1 бит)
Как на верилоге записать компактно вот это
Код:
reg [59:0] data_buf;
reg clk_30hz;
wire [59:0] wire_buf ;

assign wire_buf[0]  = data_buf[0] & clk_30hz;
assign wire_buf[1]  = data_buf[1] & clk_30hz;

.......
assign wire_buf[n]  = data_buf[n] & clk_30hz;


а не писать для каждой линии отдельно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Чт май 17, 2018 22:19:34 
Друг Кота
Аватар пользователя

Карма: 7
Рейтинг сообщений: 88
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3939
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Не верю в то, что верилог настолько неуклюж. Думаю вполне возможен вариант
Assign wire_buf[59:0]=data_buf[59:0].
Все что остаётся - поместить под алвейс запись в регистр

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Сб май 19, 2018 16:26:46 
Потрогал лапой паяльник

Зарегистрирован: Пт фев 08, 2008 13:46:03
Сообщений: 327
Откуда: Воронеж
Рейтинг сообщения: 0
Ага, такое есть "wire_buf[59:0]=data_buf[59:0]"
а "& clk_30hz" он ко всем битам применит?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Вт май 22, 2018 00:21:52 
Друг Кота
Аватар пользователя

Карма: 7
Рейтинг сообщений: 88
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3939
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Если делается привязка(тактирование) от этой частоты, то да.
Можно иначе сделать (скорее даже правильнее):
1) на высокой тактовой частоте заводим в сдвиговый регистр сигнал низкочастотного такта (30 Гц)
2) делаем детектор фронта (переднего или заднего, кому как нравится). На выходе получаем вместо длинного импульса короткий, длительностью в один такт.
3) при появлении сигнала с детектора фронта, производим защелкивание регистров.

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Вернуться наверх
 
DC/DC-преобразователи: принципы работы и уникальные решения Maxim Integrated

Что нового можно сказать про DC/DC? Написаны десятки статей, а самостоятельное изготовление преобразователя мощностью от единиц Вт до нескольких кВт даже в домашних условиях не составляет большого труда. Тем не менее, когда речь идет о микро-, или даже нано-ваттах, проектировщик может столкнуться с рядом трудностей. Грамотная схемотехника системы питания не возможна без знания основ работы DC/DC преобразователей. Освежить базовые знания и узнать об особенностях проектирования узлов питания мобильного устройства с оптимальным энергопотреблением можно из следующей статьи.

Читать статьи>>
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Пт май 25, 2018 18:55:49 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб окт 01, 2016 13:03:46
Сообщений: 24
Рейтинг сообщения: 0
Все делается очень просто.

Вот вам код с последовательной логикой:
Код:
always @(posedge clk or negedge reset)
     begin
          if (!reset) data_buf <= 'h0;
          else data_buf <= wire_buf;
     end

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

Либо комбинационно с (*).


Вернуться наверх
 
Руководство для разработчика приложений на базе STM32WB55

Представив двухъядерные беспроводные микроконтроллеры STM32WB для IoT-приложений, компания STMicroelectronics предлагает разработчикам экосистему, включающую в себя отладочные платы, примеры кода для микроконтроллера, готовое ПО всех уровней и большой массив документации.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Ср окт 03, 2018 14:43:27 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 211
Рейтинг сообщения: 0
Томми, Ваш код делает совсем не то о чем спрашивалось :))
не могу представить зачем Вам понадобился ТАКОЙ функционал, но технически это можно сделать так:
assign wire_buf = data_buf & {60{clk_30hz}};
или так
assign wire_buf = clk_30hz? data_buf : 60'b0;

ну, а если синхронно делать, то
reg [59:0] wire_buf ;
always @(posedge fastCLK)
if (clk_30hz)
wire_buf <= data_buf ;
else
wire_buf <= 60'b0;

Ы))

_________________
Шоб я польку танцевал..


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Пн окт 08, 2018 13:03:18 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб окт 01, 2016 13:03:46
Сообщений: 24
Рейтинг сообщения: 0
Томми, Ваш код делает совсем не то о чем спрашивалось :))
не могу представить зачем Вам понадобился ТАКОЙ функционал, но технически это можно сделать так:
assign wire_buf = data_buf & {60{clk_30hz}};
или так
assign wire_buf = clk_30hz? data_buf : 60'b0;

ну, а если синхронно делать, то
reg [59:0] wire_buf ;
always @(posedge fastCLK)
if (clk_30hz)
wire_buf <= data_buf ;
else
wire_buf <= 60'b0;

Ы))

1. Код делат как раз то, что нужно автору поста: переписывает значения с шины в регистр.
2. Если код делает "не то", то поясните конкретнее где Вы видите несоответствие.
3.
3.1 Ваш assign по posedge clk пишет данные в регистр, а по negedge этот регистр сбрасывает. Во первых это не то, что интересовало автора, а во вторых эта конструкция не будет работать на частотах выше 100 MHz (примерно).
3.2 Ваша "синхронная" логика вообще работать не будет т.к. имеет место две разные частоты и без пересехронизации эта конструкция обречена на провал. В дополнении "fastCLK" может быть в 5-10 раз и т.д. быстрее clk_30hz, и информации за один такт может быть перезаписана кучу раз (при наличии пересинхронизатора частот), что ведет за собой некорректную запись/работу устройства.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Пн окт 08, 2018 18:58:33 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 211
Рейтинг сообщения: 0
автор просил сделать это для всех 60 бит:
assign wire_buf[0] = data_buf[0] & clk_30hz;

wire_buf это не регистр! а провод. а эта конструкция не что иное как обычная НЕ ТАКТИРУЕМАЯ логическая функция.
А clk_30hzв этом контексте не частота, а скорее сигнал enable

Ваш код действительно по клоку защелкивает сигнал, но в поставленной задаче требуется не это!

Последняя конструкция очень даже имеет место быть и именно с таким функционалом.
если на сигнале "написано", что он clk_30hz это не значит, что им можно только тактировать.

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Распродажа паяльных станций ATTEN и аксессуаров!
Индукционная паяльная станция AT315D - 3 977 ₽, станция паяльная AT80D – 2177 ₽, станция паяльная AT936b – 1000 ₽!

Заходите в раздел акции и спецпредложения на сайте prist.ru, покупайте измерительные приборы, инструмент и паяльно-ремонтное оборудование по специальным ценам.
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Пн окт 08, 2018 22:09:19 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб окт 01, 2016 13:03:46
Сообщений: 24
Рейтинг сообщения: 0
автор просил сделать это для всех 60 бит:
assign wire_buf[0] = data_buf[0] & clk_30hz;

wire_buf это не регистр! а провод. а эта конструкция не что иное как обычная НЕ ТАКТИРУЕМАЯ логическая функция.
А clk_30hzв этом контексте не частота, а скорее сигнал enable

Ваш код действительно по клоку защелкивает сигнал, но в поставленной задаче требуется не это!

Последняя конструкция очень даже имеет место быть и именно с таким функционалом.
если на сигнале "написано", что он clk_30hz это не значит, что им можно только тактировать.


1. Нет такого понятия "не тактируемая". Логика бывает последовательная и комбинационная.
2. enable это enable, clk - всегда тактовая частота.
3. Мой код не защелкивает по клоку, а переписывает данные, это принципиально разные вещи.
4. Из Вашего "последовательного" кода я делаю вывод что Вы никогда не имели дела со схемой в которой используется несколько тактовых доменов.
5. Рекомендую Вам использовать такие обозначения сигналов, чтобы и Вам и человеку, который в последствии может работать с Вашим кодом, было интуитивно понятно что из себя представляет/какую функцию должен выполнять сигнал. Иначе, имея дело с большим проектом и с большим количеством сигналов 99% возникнет путаница.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Вт окт 09, 2018 03:52:57 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 211
Рейтинг сообщения: 0
вопрос: RS триггер тактируется?
так вот это и есть нетактируемая логика,
а именно:

wire q,q1;
assign q2 = ~(r&q1);
assign q1 = ~(s&q2);
конечно можно сделать конструкцию и по фронтам и по дополнительному клоку.

Далее: код автора:
assign wire_buf[0] = data_buf[0] & clk_30hz;
Ваш код:
data_buf <= wire_buf;
как минимум приемник с источником поменян. А наоборот не поставить: ибо wire_buf это провод, а провода могут помнить, только если их намотать на ферритовое кольцо и то не долго.
конкретно этот код "wire_buf[0] = data_buf[0] & clk_30hz" генерит только 1 логический элемент "И" и ничего больше.

TommyVersace писал(а):
enable это enable, clk - всегда тактовая частота

с какого это перепугу?
TommyVersace писал(а):
Мой код не защелкивает по клоку, а переписывает данные, это принципиально разные вещи.


always @(posedge clk or negedge reset)
begin
if (!reset) data_buf <= 'h0;
else data_buf <= wire_buf;
end
[/quote]
Если это не защелкивание по posedge clk, то что же еще??? Если мне не верите, то сгенерите проект и посмотрите результаты синтеза.
дальше:
TommyVersace писал(а):
Ваш assign по posedge clk пишет данные в регистр, а по negedge этот регистр сбрасывает. Во первых это не то, что интересовало автора, а во вторых эта конструкция не будет работать на частотах выше 100 MHz (примерно).

какой еще negedge ???? Какие 100MHz ??? какой assign по posedge clk ???????? что это за бред??? откуда это взялось????
Конструкция пишет в регистр каждый posedge fastCLK то ли состояние регистра data_buf, то ли 0 в зависимости от состояния линии clk_30hz на текущий момент.
TommyVersace писал(а):
Из Вашего "последовательного" кода я делаю вывод что Вы никогда не имели дела со схемой в которой используется несколько тактовых доменов.

совершенно напрасно - писал, большие и на 3х клоках, и как ни странно - рабочие . если Вы читали вопрос автора(а он как ни странно относился к синтаксису языка) я дал полный и развернутый ответ
FPGAlover писал(а):
не могу представить зачем Вам понадобился ТАКОЙ функционал, но технически это можно сделать так:

И наконец на счет пункта 5.- я использовал обозначения предложенные автором.


Кстати, неплохо бы было хотя бы прогнать проект(ы) автора, свои и мои через симуляцию прежде чем лезть в категоричную полемику.
и задачка по теме на закуску, так сказать для подтверждения квалификации: что делает этот код и где тут ПРИНЦИПИАЛЬНАЯ ошибка и в чем она выражается:
(сигнал rx тактируется другим доменом, а частота clk достаточная что бы отловить все изменения rx)
module NEdedector(
input clk, nreset,
input rx,
output reg detect,
input clear_result
);
reg tmp;
always @(posedge clk or negedge nreset) begin
tmp<=rx;
if (!nreset) detect<=1'b0;
else begin
if (~rx&tmp) detect<=1'b1;
end
end

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Вт окт 09, 2018 06:20:39 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб окт 01, 2016 13:03:46
Сообщений: 24
Рейтинг сообщения: 0
Изучайте цифровую схемотехнику. Вы не понимаете о чем пишите. В чем разница между Latch и Flip Flop?
Какие ферритовые кольца? О чем Вы говорите? При чем цифровая схемотехника и ферриты? Автору нужно переписать данные из регистра в шину, это делается путем простого присвоения, в дополнение я написал как присвоить в регистр из шины.
По поводу 100 MHz - Вам знакомы такие понятия как Tsetup и Thold?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Вт окт 09, 2018 06:51:38 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 211
Рейтинг сообщения: 0
TommyVersace писал(а):
Какие ферритовые кольца?

это был сарказм, если Вы не поняли ))
Невозможно спорить с тем, кто путается в базовых понятиях языка.
Симулятор нас рассудит.
(точнее уже рассудил)
И если Вы уж до него доберетесь - заодно посмотрите результаты синтеза, и если Вы действительно при всем при этом разбираетесь в цифровой схемотехнике - то результат Вас немного удивит ))

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Ср окт 10, 2018 19:33:13 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 211
Рейтинг сообщения: 0
Замучился своими словами доказывать. лови пруф от квартуса:
module test(
input a,c,
output wire d,
output reg e
);
assign d = a & c;
always @(posedge c) e<=a;
endmodule

Изображение

Если Вы продолжите утверждать что это одно и то же - убежусь, что Вы тролль, умеющий пользоваться гуглом, но не очень то вникающий в смысл.
Ибо 90% ваших комментов бьют в молоко. (либо ошибочны, либо мимо темы)

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Чт окт 11, 2018 06:27:08 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб окт 01, 2016 13:03:46
Сообщений: 24
Рейтинг сообщения: 0
Вы вообще о чем? Где я пишу что результатом синтеза указанных строчек на Verilig-е будет другой результат?
Это наверное к Вам применим термин "смотрю в книгу - вижу фигу".
В своих сообщениях я писал что логика бывает комбинационная и последовательная, что Вы и изобразили.
Вы не поняли главное, я говорил о том, как реализуется схема, которая его интересует.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Вт окт 16, 2018 17:20:08 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 765
Рейтинг сообщения: 0
Добрый день, подскажите пожалуйста, что значит точка перед параметрами?
Код:
srlatch sr0(
 .S(switch0),
 .R(btn0),
 .Q(led0)
 );


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Вт окт 16, 2018 20:42:01 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб окт 01, 2016 13:03:46
Сообщений: 24
Рейтинг сообщения: 0
Добрый день, подскажите пожалуйста, что значит точка перед параметрами?
Код:
srlatch sr0(
 .S(switch0),
 .R(btn0),
 .Q(led0)
 );


Привет!
Это обращение к входным/выходным портам модуля.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Вт окт 16, 2018 23:39:54 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 765
Рейтинг сообщения: 0
Спасибо, а где про это можно почитать?
А если написать без этих точек?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Ср окт 17, 2018 06:18:39 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб окт 01, 2016 13:03:46
Сообщений: 24
Рейтинг сообщения: 0
Прочитать можно в учебниках по Verilog- у.
Например: https://marsohod.org/11-blog/79-veriloglesson2

Если писать без точек, то компилятор выдаст ошибку. Это синтаксис языка, "хочу" или "не хочу" тут не прокатит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: вопрос по верилогу
СообщениеДобавлено: Вс ноя 04, 2018 17:56:03 
Друг Кота
Аватар пользователя

Карма: 69
Рейтинг сообщений: 1187
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7426
Рейтинг сообщения: 0
Оригинальный вопрос, наверное, уже неактуален, но, в принципе, множество однотипных конструкций можно создавать с помощью конструкции generate.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 19 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y