﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc
311	Поддержка модуля 4W01 для платы VE-02	alx	anatoly	"Руководством компании поставлена задача реализовать поддержку модуля 4W01 платой VE-02. Для работы с этим модулем необходима ее поддержка в ПЛИС платы VE-02. В описании этого тикета я буду описывать, что требуется реализовать в ПЛИС.

Поддержка модуля 4W01 состоит из трех основных частей:

1. идентификация модуля;
1. обмен речевыми данными по каналу 64 кбитс;
1. запись управляющей информации по шине i^2^c.

== __Подключение модуля 4W01 к ПЛИС__ ==
|| || ||||= '''Выводы ПЛИС''' =||
||= '''Сигнал''' =||= '''Направление''' =||= '''Модуль 1''' =||= '''Модуль 2''' =||
||||||||  //Идентификация//  ||
||  VCC  ||  к ПЛИС  ||  G11, J16, J15  ||  D15, F15, F16  ||
||  GND  ||  к ПЛИС  ||  G16  ||  D16  ||
||||||||  //Интерфейс TDM//  ||
||  CLK  ||  от ПЛИС  ||  M10, E6  ||  M12, R10  ||
||  SYN  ||  от ПЛИС  ||  E8  ||  P11  ||
||  IN  ||  от ПЛИС  ||  D8  ||  N12  ||
||  OUT  ||  к ПЛИС  ||  C8  ||  N13  ||
||||||||  //Интерфейс I^2^C//  ||
||  SDA  ||  вход/выход  ||||  C9  ||
||  SCL  ||  от ПЛИС  ||  E9  ||  K15  ||
||||||||  //Разное//  ||
||  RESET  ||  от ПЛИС  ||  E5  ||  R11  ||

==  __Идентификация модуля__ ==

Идентификация модуля 4W01 производится по наличию высокого уровня на линиях VCC и низкого кровня на линии GND (см. таблицу выше). Если на указанных линиях одного и/или другого модуля присутствует указанная комбинация, значит в плату VE-02 установлен модуль 4W01, и ПЛИС должна работать с интерфейсами в соответствии с написанным далее.

== __Описание интерфейса TDM__ ==

Прием/передача данных канала ИКМ должна соответствовать следующей диграмме:

{{{#!plantuml
@startuml

robust ""SYN"" as SYN
robust ""CLK"" as CLK
concise ""IN,OUT"" as DATA

SYN is 0
CLK is 0
DATA is X

@SYN
0 is 1
+1 is 0

@CLK
0 is 1
+0.5 is 0
+0.5 is 1
+0.5 is 0
+0.5 is 1
+0.5 is 0
+0.5 is 1
+0.5 is 0
+0.5 is 1
+0.5 is 0
+0.5 is 1
+0.5 is 0
+0.5 is 1
+0.5 is 0
+0.5 is 1
+0.5 is 0
+0.5 is 1
+0.5 is 0
+0.5 is 1
+0.5 is 0

@DATA
1 is D7
+1 is D6
+1 is D5
+1 is D4
+1 is D3
+1 is D2
+1 is D1
+1 is D0
+1 is X

@enduml
}}}

На линиях CLK должен быть меандр частотой 2048 кГц. Период импульсов SYN - 125 мкс.

== __Описание интерфейса I^2^C__ ==

Шина I^2^C должна передавать данные из ПЛИС в модуль. Каждая транзакция выполняется в соответствии с описанием шины [wikipedia:i2c здесь]. Предполагается следующий алгоритм работы.

Транзакция инициируется процессором платы VE-02 следующим образом:
 1. CPU выполняет запись в регистр ПЛИС voice_cpu_data.
 1. CPU выполняет запись в регистр ПЛИС voice_cpu_addr.
 1. ПЛИС сбрасывает флаги в регистре voice_cpu_flag.
 1. ПЛИС передает в шину I^2^C стартовый бит.
 1. ПЛИС передает в шину байт 0xE2.
 1. ПЛИС передает в шину байт, записанный в регистр voice_cpu_addr.
 1. ПЛИС передает в шину байт, записанный в регистр voice_cpu_data.
 1. ПЛИС передает в шину стоповый бит (освобождает шину).
 1. ПЛИС устанавливает флаг готовности в регистре voice_cpu_flag.

После передачи каждого байта ПЛИС контролирует бит подтверждения от модуля и при его отсутствии (высокий уровень) устанавливает флаг ошибки (бит 1) в регистре voice_cpu_flag.

Тактовая частота линии SCL должна быть 400 кГц или немного ниже.

//Примечание: два модуля разделяют одну и ту же линию SDA. При обращении к одному из модулей линия SCL другого модуля должна оставаться неактивной (высокий уровень).//

== __Разное__ ==

Сигнал RESET имеет активный низкий уровень. Для сброса модуля переводится в низкий уровень. Условия сброса аналогичны модулям FS01 и FO01.
"	задача	closed	высокий	1 очередь	VE-02	не будем делать		
