Описание
Это проект по отладке на Linux с использованием step fpga и чипа LTC_2357. Проект предназначен для FPGA в режиме U-диска. Он решает проблему копирования файлов на FPGA под Linux, используя функцию копирования TCL.
После внесения изменений в проект необходимо выполнить команду ./run.tcl
в терминале, чтобы автоматически создать файлы и загрузить их на FPGA. При этом необходимо изменить файл run.tcl
, учитывая конкретные условия.
Среда разработки
Ключевые каталоги
.
├── 引脚.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 за раз. Сценарий выдаст следующий результат:
Данные соответствуют спецификации временных диаграмм!
Важные моменты использования LTC2357
Временная диаграмма CMOS
Таблица параметров конфигурации LTC2357
Часть имитации приёма данных
Согласно временной диаграмме 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 )