FPGA verilog LVDS通信协议笔记

一幅图胜过千言万语

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

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时钟,复位,字节,字节输出信号内容,校验结果
//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

 采用的校验法:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

考赛尔江

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值