SC-FDE_tx_comb_part

顶层集成Verilog代码

核心动作:建立内部"连接线(Wire)",把各个模块无缝串联起来。

以信号段UW插入举例:

Verilog 模块例化(调用模块) = 把写好的功能模块,像 "电子元器件" 一样,插到你的电路里用。

Verilog模块例化的标准格式:

模块名(已经定义好的模块名) 例化名<调用该模块时取的名字> (

.端口名1 ( 连线1 ),

.端口名2 ( 连线2 ),

// ...所有端口

);

模块例化注意:

1,在底层模块内部(sign_uw_inserter):它是一块"芯片"。在子模块内部,因为我通过always@()或者always @(posedge clk)这个状态机大逻辑来给他赋值,所以它必须拥有"记忆"与"驱动能力"。

这里的output reg就像是芯片内部极其强力的输出驱动寄存器(引脚的推挽电路)。它负责把状态机算出来的 1 或 0 稳稳地锁住,并推向引脚。

在always和initial块里的变量要用reg型变量

2,顶层集成模块(SC-FDE_tx_comb_part):它时"PCB主板",顶层模块不负责产生数据,它扮演的角色是一块绿色的PCB印刷电路板。

在顶层定义的wire signed15:0 sign_uw_i,在物理世界中,就是印在PCB板上的一根纯粹的铜导线。

这根铜导线的一头焊在sign_uw_inserter芯片的输出引脚(reg)上,另一头焊在下游合路器tx_data_merge的输入引脚上。

3,Verilog语法铁律速记

在 Verilog 语法中,模块例化的连线规则非常死板,但只要记住下面这两句话就永远不会错:

铁律 1(对内)模块的 output 在自己内部怎么写都可以 。如果被**always 驱动就写****re**g,如果被 assign 驱动就写 wire

铁律 2(对外) :当你在外层例化这个模块时,去接它 output 的那根线,必须、绝对、只能是 wire 类型!(因为你不能用一个存放状态的寄存器去硬接另一个寄存器输出的管脚,那会导致电路短路或多驱动冲突)。

相关推荐
仲南音2 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner2 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20203 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy3 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia3 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20203 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子3 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安4 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi
千寻xun5 天前
二、实战篇-NVME SSD控制之ZYNQ实现(六)-读写NVME SSD硬盘数据
fpga开发·nvme·nvme ssd
千寻xun5 天前
二、实战篇-NVME SSD控制之ZYNQ实现(三)
fpga开发·nvme ssd·nvme协议