1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yuan_hp-ltc2357_debug

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
readme.md

Описание

Это проект по отладке на Linux с использованием step fpga и чипа LTC_2357. Проект предназначен для FPGA в режиме U-диска. Он решает проблему копирования файлов на FPGA под Linux, используя функцию копирования TCL.

После внесения изменений в проект необходимо выполнить команду ./run.tcl в терминале, чтобы автоматически создать файлы и загрузить их на FPGA. При этом необходимо изменить файл run.tcl, учитывая конкретные условия.

Среда разработки

  • Среда моделирования: iverilog, gtkwave.
  • Поддержка скриптов: TCL (Lattice tcl interpreter), bash shell (Linux или cygwin).
  • EDA инструменты для FPGA: Diamond.
  • Модель STEP FPGA: Lattice XO2-4000 U-диск.

Ключевые каталоги

.
├── 引脚.png stepfpga开发板引脚情况
├── auto_rst.v 上电自动复位模块
├── divide.v 任意时钟分频模块
├── image
├── impl1 综合生成文件存放文件夹
├── ltc2357_master.v ltc2357驱动(主机模式)
├── monopulse.v 单脉冲发生模块(用于产生CNV信号触发LTC2357芯片开始AD转换)
├── msim iverilog+gtkwave+bash的仿真文件夹,在该文件夹下写的模块用于仿真
│   ├── ltc.v
│   ├── run
│   ├── sim 仿真生成的文件
│   │   ├── wave
│   │   └── wave.lxt2 波形文件
│   ├── tags
│   └── tb.v
├── pll_clk.edn
├── pll_clk_generate.log
├── pll_clk.ipx
├── pll_clk.lpc
├── pll_clk.naf
├── pll_clk.sort
├── pll_clk.srp
├── pll_clk.sym
├── pll_clk.v PLL配置 12MHz->120MHz
├── promote.xml
├── readme.md 项目说明文件
├── reportview.xml
├── run.tcl 综合,下载的tcl脚本(根据实际的硬件需要更改文件的目录部分)
├── top.v verilog顶层文件
└── upCloud 上传本地项目到gitee

Модуль последовательного порта

Введён модуль последовательного порта для удобства отладки. Разработанный последовательный порт позволяет отправлять и получать данные в байтах. Таким образом, можно использовать отправленные байты для управления содержимым возвращаемых данных. Например:

//+++++++++++++++++  串口模块  +++++++++++++++++++++++
reg [7:0] tx_data;
wire [7:0] rx_data;
always@(rx_data)
begin
    case(rx_data)
        8'h00:tx_data = rx_data;
        8'h01:tx_data = 8'h50;
        8'h02:tx_data = 8'h53;
        default:tx_data = rx_data;
    endcase
end

Все коды модуля последовательного порта находятся в файле Uart_Bus.v. Его верхний уровень ввода-вывода выглядит следующим образом:

//串口顶层模块
module Uart_Bus #
(
    parameter               BPS_PARA = 1250 //当使用12MHz时钟时波特率参数选择1250对应9600的波特率
)
(
    input                   clk_in,         //系统时钟
    input                   rst_n_in,       //系统复位,低有效
    input                   rs232_rx,       //FPGA中UART接收端,分配给UART模块中的发送端TXD
    output                  rs232_tx,       //FPGA中UART发送端,分配给UART模块中的接收端RXD
    output    [7:0]         rx_data,       //读到的数据
    input     [7:0]         tx_data        //发送的数据
);      

Сценарий связи через последовательный порт на основе Linux

Для облегчения тестирования данных используется сценарий оболочки bash для чтения и записи данных через последовательный порт.

Сценарий usb.sh в проекте позволяет получить значение ad одного чипа LTC2357 за раз. Сценарий выдаст следующий результат:

image-20200809213257243

Данные соответствуют спецификации временных диаграмм!

Важные моменты использования LTC2357

Временная диаграмма CMOS

Таблица параметров конфигурации LTC2357

image-20200809212551730

Часть имитации приёма данных

Согласно временной диаграмме CMOS, после того как чип LTC2357 работает под управлением FPGA, данные AD преобразуются и сохраняются. Затем данные считываются во время спадающего фронта тактового сигнала. Однако при чтении данных во время спадающего фронта, если тактовый сигнал находится в высоком состоянии во время простоя, мы потеряем старший бит данных AD и получим дополнительный старший бит из следующих данных AD. Чтобы решить эту проблему, регистр временного хранения данных AD использует разрядность, превышающую фактическую на один бит. После завершения получения данных AD мы сохраняем старшие 24 бита как преобразованные данные текущего AD.

//模拟接收LTC2357数据
reg [23:0]rdata;
reg [24:0]rec_r; 
//为了使用时钟下降沿来读取数据,设计中必须保证时钟在
//空闲的时候,处于高电平,。在使用时钟下降沿读取数据时,将会
//多移位一次,因此获取24位的数据,我们要薄脆25位数据,在刷新
//转换的数据时我们取临时ad数据存储的高24位
always@(negedge scki or posedge busy)
begin
    if(busy)
        rdata <= rec_r[24:1];
    else 
        rec_r <= {rec_r[23:0],sdo0};
end
``` Данный текст представляет собой фрагмент исходного кода на языке Verilog и описание к нему. В запросе используется язык Verilog.

**Перевод текста на русский язык:**

// Имитация получения данных LTC2357
reg [23:0] rdata;
reg [24:0] rec_r;  

// Для использования тактового сигнала спадающего фронта для чтения данных, в проекте необходимо гарантировать, что тактовый сигнал находится на высоком уровне в режиме ожидания. При использовании тактового сигнала спадающего фронта для считывания данных будет происходить сдвиг на один раз, поэтому для получения 24-битных данных нам нужно обрезать 25-й бит. При обновлении преобразованных данных мы берём 24 старших бита из временного хранилища ad-данных.
always @(negedge scki or posedge busy) begin
    if (busy)
        rdata <= rec_r[24:1];
    else
        rec_r <= {rec_r[23:0],sdo0};
end

endmodule

Данный файл инстанцируется в tb.v. Результаты моделирования следующие:

# **Таблица соответствия выводов**

| Имя вывода модуля | Вывод FPGA | Номер шага |
| :--------------: | :------: | :----------: |
| clk_in          | C1      |             |
| rst_n_in        | L14     | KEY1         |
| led1           | N13     | LED1         |
| led2           | M12     | LED2         |
| cnv            | E3      | GPIO0        |
| csn            | F3      | GPIO1        |
| busy           | G3      | GPIO2        |
| scki           | H3      | GPIO3        |
| sdi            | J2      | GPIO4        |
| rs232_rx       | P8      | GPIO14       |
| rs232_tx       | N8      | GPIO15       |
| sdo0           | J3      | GPIO5        |
| sdo1           | K2      | GPIO6        |
| sdo2           | K3      | GPIO7        |
| sdo3           | L3      | GPIO8        |

# **Тестирование на плате**

Для тестирования используется FPGA с малым количеством выводов, модель STEP-MXO2-C. Тактовый генератор платы использует частоту 12 МГц. Во время работы внутренняя PLL умножает частоту до 120 МГц, которая используется как основная частота системы.

Тестовая плата для LTC2357 использует самостоятельно разработанную плату Debug-4-channel-AD-LTC2357. Эта плата содержит только основной чип LTC2357 и предназначена исключительно для тестирования написанного драйвера. Результаты тестирования можно увидеть в следующей таблице:

| Тестируемый параметр | Результат тестирования | Проблема | Решение |
| ------------------- | ---------------------- | ------- | ------ |
| Конфигурация параметров (диапазон тестирования, точность) | Соответствие между конфигурацией и результатами | Нет | Нет |
| Правильность возвращаемых данных | Все каналы возвращают правильные данные, основываясь на конфигурации и идентификаторе канала | Нет | Нет |
| Проверка соотношения преобразования | При диапазоне от -10,24 до +10,24 и напряжении питания +3,3 В и +5 В результаты в основном совпадают. Точность будет проверена после переноса на другую платформу (10,24 × AD / 2^15) | Нет | Нет |

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/yuan_hp-ltc2357_debug.git
git@gitlife.ru:oschina-mirror/yuan_hp-ltc2357_debug.git
oschina-mirror
yuan_hp-ltc2357_debug
yuan_hp-ltc2357_debug
master