Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 16.01.2010, 01:11  
toxxinus
Временная регистрация
 
Регистрация: 12.02.2008
Сообщений: 77
Сказал спасибо: 84
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
toxxinus на пути к лучшему
По умолчанию Реализация цикла на Verilog

Доброго времени суток!

Стоит задача передать байт данных на порт ПЛИС. Биты должны выходить с определенной задержкой. Получаем что-то типо USART(последовательность бит). Для уменьшения кода хочу применить цикл for. Делаю так:

Код:
inout reg port = 1'b1; //инициализация порта

always@(posedge wd)
begin
	address ‹= 8'b10101011;

	for (cnt = 0; cnt ‹= 7; cnt = cnt + 1) begin
		#10 port = address[cnt];
            end
end
Здесь я пытаюсь каждые 10млс присваивать порту отдельный бит регистра address.

Временные диаграммы показывают выполение всех итераций цикла за один такт. Т.е. на временных диаграммах счетчик cnt равен 7 сразу по приходу фронта wd.

Спасибо!
Реклама:
toxxinus вне форума  
Непрочитано 16.01.2010, 02:22  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Реализация цикла на Verilog

Сообщение от toxxinus Посмотреть сообщение
Для уменьшения кода хочу применить цикл for.
В always блоке это чаще всего бесполезно.
Собственно то что Вы хотите сделать это банальный сдвиговый регистр с параллельной загрузкой.
Ну вот и подумайте что должно получиться - по фронту wd Вам нужны все 8 сдвигов? Или все же 1?
И придется блок разбить на загрузку и собственно сдвиг, иначе address будет перезагружаться каждый фронт, и в результате получите неизменный уровень на выходе.
Именно такую константу надо двигать?
Может тогда просто инвертировать port при каждом фронте wd?
А так сдвиг примерно выглядит так:
Код:
output reg dout;
input sck;
reg [7:0] data;
always @(posedge sck)
		begin
                      dout ‹= data[0];
                      data[6:0] ‹= data[7:1];
		// если нужно по кольцу
                      data[7] ‹= data[0];
		end
Добавьте загрузку в data "по вкусу".
Надеюсь не наврал, уже спать хочу
kison вне форума  
Сказали "Спасибо" kison
toxxinus (16.01.2010)
Непрочитано 16.01.2010, 02:29  
toxxinus
Временная регистрация
 
Регистрация: 12.02.2008
Сообщений: 77
Сказал спасибо: 84
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
toxxinus на пути к лучшему
По умолчанию Re: Реализация цикла на Verilog

Спасибо. Если поконкретнее, то надо двигать регистр как вы и сказали. Вообще это реализация шины i2c. Нужно выдерживать скорость передачи. по сигналу wd осуществляется начало передачи.
toxxinus вне форума  
Непрочитано 16.01.2010, 03:14  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Реализация цикла на Verilog

Сообщение от toxxinus Посмотреть сообщение
Вообще это реализация шины i2c. Нужно выдерживать скорость передачи. по сигналу wd осуществляется начало передачи.
Тут на казусе ветку по плисам открывать не хотят. Попробуйте вот сюда сходить - http://forum.ixbt.com/topic.cgi?id=48:1629
Там очень душевные люди помогают начинающим в освоении верилога. Я тоже его только учу, там на последних страницах мои очень похожие на Ваши попытки. И тоже сдвигового регистра. Правда наоборот из последовательного в параллельный, но все же похоже. Я как раз использовал цикл. Почитайте что из этого вышло - http://forum.ixbt.com/topic.cgi?id=48:1629-166
Хотя у меня и получилось то что задумывал, но совершенно случайно.
Кроме того там вверху странички есть выделенные красным Локальные полезные ссылки. Очень помогают в изучении.
kison вне форума  
Сказали "Спасибо" kison
toxxinus (16.01.2010)
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реализация информации от энкодера gusvik Микроконтроллеры, АЦП, память и т.д 10 15.01.2010 02:48
Реализация пульта ДУ к компу vicvtor Автоматика и аппаратура связи 2 11.11.2009 20:37
Реализация USB-хоста на at90usb1287. Как? svad0 Микроконтроллеры, АЦП, память и т.д 12 30.10.2009 10:32


Часовой пояс GMT +4, время: 05:23.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot