FPGA verilog LVDS通信协议笔记

一幅图胜过千言万语

直接开始挫代码,先写top.v。

cpp 复制代码
module top();

reg clk; // 生成时钟的寄存器
reg rst; // 生成复位信号的寄存器

initial clk = 1; // 初始值取1
always #1 clk = ~clk; //1ns取反一次

initial begin // 复位信号,先0,过段时间赋1
rst = 0;
# 20;
rst = 1;
$stop;
end   
endmodule

再加其他三个子项的接口:

|----------|-----------------|-----------|
| | 输入 | 输出 |
| bit_sent | 时钟,复位 | 比特流 |
| bit_rsv | 时钟,复位,比特流 | 字节,字节输出信号 |
| byte_rsv | 时钟,复位,字节,字节输出信号 | 内容,校验结果 |

cpp 复制代码
//top.v
module top();

reg clk;
reg rst;

initial clk = 1;
always #1 clk = ~clk;

initial begin
rst = 0;
# 20;
rst = 1;
$stop;
end   

// wire表示线,其他文件的输出用线接,自己的内容用寄存器输出或者保存
wire bits; 

bit_sent bit_sent(
    .clk (clk),
    .reset (rst),
    .bits(bits)  //这里不能有逗号
    );  //这里不能忘记冒号
    
    
wire [7:0] data_out; // [7:0] 表示高位7到底为0,共8比特
wire en_data_out;

bit_rsv bit_rsv
(
    .clk (clk),
    .reset (rst),
    .uart_tx (bits), // .uart_tx是bit_rsv文件形参名称
//括号内的bits是bit_sent的输出bits接到uart_tx上
    .data_out (data_out),
    .en_data_out (en_data_out)
);


wire [15:0] contant;
wire crc_match; 

byte_rsv byte_rsv
(
    .clk (clk),
    .reset (rst),
    .byte_in(data_out),
	.en_byte(en_data_out),
	.contant(contant),
	.crc_match (crc_match)
    );
   
endmodule

采用的校验法:

相关推荐
茴香豆的茴15 小时前
转码刷 LeetCode 笔记[2]:203. 移除链表元素(python)
笔记·leetcode·链表
wdfk_prog5 小时前
[Linux]学习笔记系列 -- [arm][lds]
linux·运维·arm开发·笔记·学习
范纹杉想快点毕业6 小时前
C 语言主控开发与显控开发能力体系及技术栈详解,STM32、QT、嵌入式、边缘系统显示
stm32·单片机·tcp/ip·microsoft·fpga开发·51单片机·wpf
无名咸鱼7 小时前
CICD部署流程详解文档笔记
笔记·ci/cd
秋风战士7 小时前
通信算法之306:精通FPGA-笔记核心
笔记·fpga开发
一颗正在价投韭菜8 小时前
《范仲淹传》读书笔记与摘要
笔记·学习·范仲淹
微小冷9 小时前
OV5640 相机开发流程
fpga开发·verilog·ov5640·双目相机·相机开发
teeeeeeemo9 小时前
js 实现 ajax 并发请求
开发语言·前端·javascript·笔记·ajax
老虎062710 小时前
JavaWeb(苍穹外卖)--学习笔记17(Apache Echarts)
笔记·学习·apache
szxinmai主板定制专家12 小时前
基于FPGA的热电偶测温数据采集系统,替代NI的产品(二)总体设计方案
arm开发·人工智能·嵌入式硬件·fpga开发