当前位置:   article > 正文

FPGA verilog LVDS通信协议笔记_使用fpga编写lvds协议

使用fpga编写lvds协议

一幅图胜过千言万语

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

  1. module top();
  2. reg clk; // 生成时钟的寄存器
  3. reg rst; // 生成复位信号的寄存器
  4. initial clk = 1; // 初始值取1
  5. always #1 clk = ~clk; //1ns取反一次
  6. initial begin // 复位信号,先0,过段时间赋1
  7. rst = 0;
  8. # 20;
  9. rst = 1;
  10. $stop;
  11. end
  12. endmodule

再加其他三个子项的接口

输入输出
bit_sent时钟,复位比特流
bit_rsv时钟,复位,比特流字节,字节输出信号
byte_rsv时钟,复位,字节,字节输出信号内容,校验结果
  1. //top.v
  2. module top();
  3. reg clk;
  4. reg rst;
  5. initial clk = 1;
  6. always #1 clk = ~clk;
  7. initial begin
  8. rst = 0;
  9. # 20;
  10. rst = 1;
  11. $stop;
  12. end
  13. // wire表示线,其他文件的输出用线接,自己的内容用寄存器输出或者保存
  14. wire bits;
  15. bit_sent bit_sent(
  16. .clk (clk),
  17. .reset (rst),
  18. .bits(bits) //这里不能有逗号
  19. ); //这里不能忘记冒号
  20. wire [7:0] data_out; // [7:0] 表示高位7到底为0,共8比特
  21. wire en_data_out;
  22. bit_rsv bit_rsv
  23. (
  24. .clk (clk),
  25. .reset (rst),
  26. .uart_tx (bits), // .uart_tx是bit_rsv文件形参名称
  27. //括号内的bits是bit_sent的输出bits接到uart_tx上
  28. .data_out (data_out),
  29. .en_data_out (en_data_out)
  30. );
  31. wire [15:0] contant;
  32. wire crc_match;
  33. byte_rsv byte_rsv
  34. (
  35. .clk (clk),
  36. .reset (rst),
  37. .byte_in(data_out),
  38. .en_byte(en_data_out),
  39. .contant(contant),
  40. .crc_match (crc_match)
  41. );
  42. endmodule

 采用的校验法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/951347
推荐阅读
相关标签
  

闽ICP备14008679号