реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Конвертер serial->8b parallel, Хочу сделать на CPLD от Альтеры
MAXvaLL
сообщение Jan 31 2008, 08:42
Сообщение #31


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Цитата(khach @ Jan 31 2008, 11:15) *
Опишите функцию своего устройства, а то меня терзают смутные сомнения что городиться преобразователь I2S-шина CY7C68013 для аудиоустройства? Тгда всю проблему можно решить парой ссылок на opencores.

Вы как всегда правы smile.gif
I2S или LeftJustified
Но есть желание поддержки TDM (это когда до 4х устройств висит на одной шине, и посылки разделены по времени. скорость соотв. выше)

Буду признателен за помощь. Я в плис еще ЧАЙНЕГ... ( эмалированный biggrin.gif )

PS Verilog тут глянул - прикольная тема! Мне, как Си программисту очень близко smile.gif
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 31 2008, 10:14
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(dvladim @ Jan 30 2008, 23:41) *
Не однозначно.

Verilog и VHDL занимают примерно по 50% рынка.
Исторически повелось, что Verilog чаще использовался для проектов в ASIC. Для проектов в ПЛИС чаще используют VHDL. Но оба этих языка примерно равны и являются лидерами.
Перспективным считается SystemVerilog, но его рынок пока невелик.
Verilog соотносится с VHDL примерно как C с ADA. Еще можно взглянуть на одинаковые тестовые проекты, сделанные в Verilog и VHDL, посчитать строки кода и прикинуть, что проще изучить smile.gif

Например, примеры конструкций, синтезируемых в примитивы (Xilinx, XST) занимают

Verilog - 2200 строк

VHDL - 2800 строк

Так что для изучения с нуля и последующего использования Verilog явно предпочтительней (хотя рекомендуется знать оба)
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Jan 31 2008, 23:36
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Нашел I2S Interface core.
Но он на VHDL, а я уж взялся за Verilog, и даж продвинулся неплохо... Не хочу пока голову забивать!
Что-то слышал про конвертеры...
Да, там еще шина паралл. хз какя.
Так что вопрос актуален пока!
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 1 2008, 09:14
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(MAXvaLL @ Feb 1 2008, 02:36) *
Нашел I2S Interface core.
Но он на VHDL, а я уж взялся за Verilog, и даж продвинулся неплохо... Не хочу пока голову забивать!
Что-то слышал про конвертеры...
Да, там еще шина паралл. хз какя.
Так что вопрос актуален пока!


Собственно I2S Interface состоит из сдвигового регистра smile.gif Для стыковки с CY понадобится еще куча всего, так что сам по себе он практически бесполезен.

Что касается использования готовых VHDL корок в проекте на Verilog'е, то это вполне возможно - практически все синтезаторы и системы моделирования допускают смесь этих языков. Только это вряд ли оправдано для I2S Interface core biggrin.gif
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Feb 1 2008, 11:44
Сообщение #35


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Цитата(XVR @ Feb 1 2008, 12:14) *
Собственно I2S Interface состоит из сдвигового регистра smile.gif Для стыковки с CY понадобится еще куча всего, так что сам по себе он практически бесполезен.

Что касается использования готовых VHDL корок в проекте на Verilog'е, то это вполне возможно - практически все синтезаторы и системы моделирования допускают смесь этих языков. Только это вряд ли оправдано для I2S Interface core biggrin.gif

Это понятно
Но не все так просто там. Там уже есть FIFO, и LRCK сам разбирает.
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 1 2008, 12:59
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(MAXvaLL @ Feb 1 2008, 14:44) *
Это понятно
Но не все так просто там. Там уже есть FIFO, и LRCK сам разбирает.
FIFO лучше взять от производителя FPGA - оно будет оптимизированно на данный конкретный кристал.
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Feb 1 2008, 14:56
Сообщение #37


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Смотрю тут сорец один:
Код
...
reg bclk;
reg [3:0]fd;
...
initial begin fd=0;end
...
always @(posedge clk)
begin
    fd<=fd+1;
    if(fd==7) fd<=0;
    if(fd<4) bclk<=0;
    else  bclk<=1;
        
end

И что-то никак не врубаю - как эта хрень работать будет?
Заявленно, что clk=16.9344 MHz и что получится bck=1.4112 MHz (делим на 12)
Я что-то не верю! И вообще, как-то через Ж... сделано.

bclk не инитится. оно 0 будет?

Понимаю так: (clk сначала остановлен)
0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 :clk
0 0 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 0 0 :fd
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0:bclk

Получается, что делится на 8 07.gif

Честно говоря не очень ясно еще: при fd==7, в него одновременно пихается 0 и 8 (fd+1)
fd<=fd+1 и if(fd==7) fd<=0 выполняются параллельно или последовательно? <= неблок. - значит вроде паралл.

может так?
fd установится в 7, и сразу сбросится в 0
0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 clk
0 0 0 0 1 1 2 2 3 3 4 4 5 5 6 6 0 0 1 1 2 2 3 3 4 4 5 5 6 6 0 0 fd
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 bclk
тогда делится на 7... crying.gif

Сообщение отредактировал MAXvaLL - Feb 1 2008, 15:05
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 1 2008, 15:33
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(MAXvaLL @ Feb 1 2008, 17:56) *
Смотрю тут сорец один:
Код
...
reg bclk;
reg [3:0]fd;
...
initial begin fd=0;end
...
always @(posedge clk)
begin
    fd<=fd+1;
    if(fd==7) fd<=0;
    if(fd<4) bclk<=0;
    else  bclk<=1;
        
end

И что-то никак не врубаю - как эта хрень работать будет?
Заявленно, что clk=16.9344 MHz и что получится bck=1.4112 MHz (делим на 12)
Я что-то не верю!
И правильно - будет делить на 7, и то не факт smile.gif



Цитата
И вообще, как-то через Ж... сделано.
Это точно


Цитата
bclk не инитится. оно 0 будет?
Оно будет X до первого присваивания. В реальной железке будет чем то, неизвестно чем (скорее всего 0)


Цитата
Честно говоря не очень ясно еще: при fd==7, в него одновременно пихается 0 и 8 (fd+1)
fd<=fd+1 и if(fd==7) fd<=0 выполняются параллельно или последовательно? <= неблок. - значит вроде паралл.
Параллельно. Симулятор имеет право обругаться.


Цитата
может так?
fd установится в 7, и сразу сбросится в 0
0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 clk
0 0 0 0 1 1 2 2 3 3 4 4 5 5 6 6 0 0 1 1 2 2 3 3 4 4 5 5 6 6 0 0 fd
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 bclk
тогда делится на 7... crying.gif
Автор предполагал именно так, но более правильно было бы записать
Код
always @(posedge clk)
begin
    if(fd==7) fd<=0;
    else fd<=fd+1;
    if(fd<4) bclk<=0;
    else  bclk<=1;        
end


Сообщение отредактировал XVR - Feb 1 2008, 15:34
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Feb 1 2008, 15:48
Сообщение #39


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Цитата(XVR @ Feb 1 2008, 18:33) *
Автор предполагал именно так, но более правильно было бы записать

Код
always @(posedge clk)
begin
    if(fd==7) fd<=0;
    else fd<=fd+1;
    if(fd<4) bclk<=0;
    else  bclk<=1;        
end

Тогда автар дурак! cranky.gif
Ладно бы на 6, но причем тут 7, если надо на 12?!
Причем типо устройство и типа работает.

Железно smile.gif
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Feb 3 2008, 12:32
Сообщение #40


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Тут при реализации вопрос возник:
параллельная шина у нас двунаправленная.
А я не пойму, как это описать на верилоге?
Создать 2 шины input и output и физически конектить к одним пинам?
Или ода шина может быть i/o? И как это описать?
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 3 2008, 15:58
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(MAXvaLL @ Feb 3 2008, 15:32) *
Тут при реализации вопрос возник:
параллельная шина у нас двунаправленная.
А я не пойму, как это описать на верилоге?
Создать 2 шины input и output и физически конектить к одним пинам?
Или ода шина может быть i/o? И как это описать?
Поставить физический элемент I/O буфера c 3мя состояниями. У него наружу (на выводы FPGA) идет сигнал типа inout, а внутрь (к схеме) - 2 разделенных сигнала на ввод и вывод.

Для Xilinx это IOBUF, порты:

IO - двунаправленная внешняя шина
I - Вход
O - Выход
T - Разрешение передачи (лог. 0)

Сообщение отредактировал XVR - Feb 3 2008, 16:00
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Feb 3 2008, 20:04
Сообщение #42


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Цитата(XVR @ Feb 3 2008, 18:58) *
Поставить физический элемент I/O буфера c 3мя состояниями. У него наружу (на выводы FPGA) идет сигнал типа inout, а внутрь (к схеме) - 2 разделенных сигнала на ввод и вывод.

Для Xilinx это IOBUF, порты:

Это библиотечный элемент?
А описать его включение на верилоге можно? Или только в редакторе производителя?
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 4 2008, 16:41
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(MAXvaLL @ Feb 3 2008, 23:04) *
Это библиотечный элемент?
Да
Цитата
А описать его включение на верилоге можно?
Да

Код


IOBUF my_3state_buffer(.I(input_line),.O(output_line),.IO(pad_line),.T(tristate_line));
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Feb 4 2008, 18:19
Сообщение #44


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Цитата(XVR @ Feb 4 2008, 19:41) *
IOBUF my_3state_buffer(.I(input_line),.O(output_line),.IO(pad_line),.T(tristate_line))
;

Понял. Спасибо!
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 02:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01501 секунд с 7
ELECTRONIX ©2004-2016