|
Конвертер serial->8b parallel, Хочу сделать на CPLD от Альтеры |
|
|
|
Jan 31 2008, 08:42
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
Цитата(khach @ Jan 31 2008, 11:15)  Опишите функцию своего устройства, а то меня терзают смутные сомнения что городиться преобразователь I2S-шина CY7C68013 для аудиоустройства? Тгда всю проблему можно решить парой ссылок на opencores. Вы как всегда правы I2S или LeftJustified Но есть желание поддержки TDM (это когда до 4х устройств висит на одной шине, и посылки разделены по времени. скорость соотв. выше) Буду признателен за помощь. Я в плис еще ЧАЙНЕГ... ( эмалированный  ) PS Verilog тут глянул - прикольная тема! Мне, как Си программисту очень близко
|
|
|
|
|
Jan 31 2008, 10:14
|
Гуру
     
Группа: Свой
Сообщений: 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, посчитать строки кода и прикинуть, что проще изучить  Например, примеры конструкций, синтезируемых в примитивы (Xilinx, XST) занимают Verilog - 2200 строк VHDL - 2800 строк Так что для изучения с нуля и последующего использования Verilog явно предпочтительней (хотя рекомендуется знать оба)
|
|
|
|
|
Feb 1 2008, 11:44
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
Цитата(XVR @ Feb 1 2008, 12:14)  Собственно I2S Interface состоит из сдвигового регистра  Для стыковки с CY понадобится еще куча всего, так что сам по себе он практически бесполезен. Что касается использования готовых VHDL корок в проекте на Verilog'е, то это вполне возможно - практически все синтезаторы и системы моделирования допускают смесь этих языков. Только это вряд ли оправдано для I2S Interface core  Это понятно Но не все так просто там. Там уже есть FIFO, и LRCK сам разбирает.
|
|
|
|
|
Feb 1 2008, 14:56
|
Местный
  
Группа: Свой
Сообщений: 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 Честно говоря не очень ясно еще: при 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...
Сообщение отредактировал MAXvaLL - Feb 1 2008, 15:05
|
|
|
|
|
Feb 1 2008, 15:33
|
Гуру
     
Группа: Свой
Сообщений: 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, и то не факт Цитата И вообще, как-то через Ж... сделано. Это точно Цитата 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...  Автор предполагал именно так, но более правильно было бы записать Код 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
|
|
|
|
|
Feb 1 2008, 15:48
|
Местный
  
Группа: Свой
Сообщений: 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 Тогда автар дурак! Ладно бы на 6, но причем тут 7, если надо на 12?! Причем типо устройство и типа работает. Железно
|
|
|
|
|
Feb 3 2008, 15:58
|
Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Feb 3 2008, 20:04
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639

|
Цитата(XVR @ Feb 3 2008, 18:58)  Поставить физический элемент I/O буфера c 3мя состояниями. У него наружу (на выводы FPGA) идет сигнал типа inout, а внутрь (к схеме) - 2 разделенных сигнала на ввод и вывод.
Для Xilinx это IOBUF, порты: Это библиотечный элемент? А описать его включение на верилоге можно? Или только в редакторе производителя?
|
|
|
|
|
Feb 4 2008, 16:41
|
Гуру
     
Группа: Свой
Сообщений: 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));
|
|
|
|
|
Feb 4 2008, 18:19
|
Местный
  
Группа: Свой
Сообщений: 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)) ; Понял. Спасибо!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|