`timescale 100 ns / 10 ps
module processingElement(clk,reset,floatA,floatB,result);
parameter DATA_WIDTH = 16;
input clk, reset;
input [DATA_WIDTH-1:0] floatA, floatB;
output reg [DATA_WIDTH-1:0] result;
wire [DATA_WIDTH-1:0] multResult;
wire [DATA_WIDTH-1:0] addResult;
floatMult FM (floatA,floatB,multResult);
floatAdd FADD (multResult,result,addResult);
always @ (posedge clk or posedge reset) begin
if (reset == 1'b1) begin
result = 0;
end else begin
result = addResult;
endmodule
mod_a instance1 ( wa, wb, wc );
通过端口位置一一对应,以此来实现两个模块之间的连接,但当其中一个模块的端口位置发生改变,就需要对相应连接的线进行重新连接。及线连接的对象会因为端口位置的变化而变化。
By name
mod_a instance2 ( .out(wc), .in1(wa), .in2(wb) );
该方法是...
3.5.7 `unconnected_drive和
`nounconnected_drive 18
3.5.8 `celldefine 和 `endcelldefine 18
3.6 值集合 18
3.6.1 整型数 18
3.6.2 实数 19
3.6.3 字符串 20
3.7 数据类型 20
3.7.1 线网类型 20
3.7.2 未说明的线网 23
3.7.3 向量和标量线网 23
3.7.4 寄存器类型 23
3.8 参数 26
第4章 表达式 28
4.1 操作数 28
4.1.1 常数 28
4.1.2 参数 29
4.1.3 线网 29
4.1.4 寄存器 29
4.1.5 位选择 29
4.1.6 部分选择 29
4.1.7 存储器单元 30
4.1.8 函数调用 30
4.2 操作符 30
4.2.1 算术操作符 31
4.2.2 关系操作符 33
4.2.3 相等关系操作符 33
4.2.4 逻辑操作符 34
4.2.5 按位操作符 35
4.2.6 归约操作符 36
4.2.7 移位操作符 36
4.2.8 条件操作符 37
4.2.9 连接和复制操作 37
4.3 表达式种类 38
第5章 门电平模型化 39
5.1 内置基本门 39
5.2 多输入门 39
5.3 多输出门 41
5.4 三态门 41
5.5 上拉、下拉电阻 42
5.6 MOS开关 42
5.7 双向开关 44
5.8 门时延 44
5.9 实例数组 45
5.10 隐式线网 45
5.11 简单示例 46
5.12 2-4解码器举例 46
5.13 主从触发器举例 47
5.14 奇偶电路 47
第6章 用户定义的原语 49
6.1 UDP的定义 49
6.2 组合电路UDP 49
6.3 时序电路UDP 50
6.3.1 初始化状态寄存器 50
6.3.2 电平触发的时序电路UDP 50
6.3.3 边沿触发的时序电路UDP 51
6.3.4 边沿触发和电平触发的混合行为 51
6.4 另一实例 52
6.5 表项汇总 52
第7章 数据流模型化 54
7.1 连续赋值语句 54
7.2 举例 55
7.3 线网说明赋值 55
7.4 时延 55
7.5 线网时延 57
7.6 举例 57
7.6.1 主从触发器 57
7.6.2 数值比较器 58
第8章 行为建模 59
8.1 过程结构 59
8.1.1 initial 语句 59
8.1.2 always语句 61
8.1.3 两类语句在模块中的使用 62
8.2 时序控制 63
8.2.1 时延控制 63
8.2.2 事件控制 64
8.3 语句块 65
8.3.1 顺序语句块 66
8.3.2 并行语句块 67
8.4 过程性赋值 68
8.4.1 语句内部时延 69
8.4.2 阻塞性过程赋值 70
8.4.3 非阻塞性过程赋值 71
8.4.4 连续赋值与过程赋值的比较 72
8.5 if 语句 73
8.6 case语句 74
8.7 循环语句 76
8.7.1 forever 循环语句 76
8.7.2 repeat 循环语句 76
8.7.3 while 循环语句 77
8.7.4 for 循环语句 77
8.8 过程性连续赋值 78
在我年轻的时候,在例化了几个近百行接口的module,声明了还几百行的接口和wire后,精神就已经恍惚了,一直恍惚到今天。于是后来我尝试了各种办法来简化这个过程,包括生成简单的例化代码,通过VBA做例化文件等等,但是使用无法解决还是需要手动修改和连线的问题。在见识了很多其他的连线工具后,这次我觉得可以彻底解决这个问题了。
做好的脚本我放在了固定路径下,之后在vimrc中补充这句话:
command! L :execute '%! /home/xiaotu/my_work/gen_lin
问题描述:
假设当前有两个verilog 模块M1和M2,分别完成不同的工作,但是二者使用了相同的硬件信号线,比如相同的输入data_in ,输出信号线 data_out。在硬件连接层面的确只有两根信号线,data_in 和data_out ,但是在特定情况下,比如需要使用M1模块时,那么应当将信号线的输入输出连接到M1的响应信号上,怎样和M2区别开呢?
首先,在一个工程中何时运行M1,何时运行