3-8译码器设计和IP核
1 译码器的实现
1.1 功能表分析
o表示低有效(即0有效),用bubble命名;c 是高位
1.2 真值表分析
1.3 代码分析
新建一个工程。或者从设计好的工程(多数表决器工程)开始,将工程另存为名称为p_74x138的工程。
① 模块定义
② 模块输入输出声明
③ 变量定义
④ always 块,如果有输入发生变化,执行
⑤ 如果使能有效
⑥ 根据输入端的值进行译码
⑦ 如果使能无效
⑧ Always 块结束
⑨ 模块结束
module v74x138(g1,g2a_l,g2b_l,a,y_l);
input g1,g2a_l,g2b_l;
input [2:0] a;
output [7:0] y_l;
reg [7:0] y_l=0;
always @ (g1 or g2a_l or g2b_l or a) begin
if (g1 && ~g2a_l && ~g2b_l) //逻辑与,全部使能有效
case (a)
7:y_l=8'b01111111;
6:y_l=8'b10111111;
5:y_l=8'b11011111;
4:y_l=8'b11101111;
3:y_l=8'b11110111;
2:y_l=8'b11111011;
1:y_l=8'b11111101;
0:y_l=8'b11111110;
default:y_l=8'b11111111;
endcase
else
y_l=8'b11111111;
end
endmodule
1.4 RTL分析
① 通过RTL分析,得到RTL分析的原理图如图
② 使用RAM实现的译码逻辑
③ 使能组合逻辑
④ If语句使用多路选择器实现
1.5 仿真文件
① 模块定义
② 变量定义
③ 调用被仿真模块
④ 初始化
⑤ always 块
⑥ 模块结束
module sim_v74x138( );
reg g1;
reg g2a_l;
reg g2b_l;
reg [2:0] a;
wire [7:0] y_l;
v74x138 uut (g1, g2a_l, g2b_l, a, y_l);
initial begin
g1 = 0;
g2a_l = 0;
g2b_l = 0;
a = 0;
#100;
g1 = 1;
g2a_l = 0;
g2b_l = 0;
end
always # 100 a=a+1;
endmodule
1.6 约束文件
1.7 综合
1.8 下载到实验板
编译后下载到电路板,拨动拨码开关,当使能无效时,所有的LED点亮,因为输出全为1。
使能有效时,对输入进行译码,对应的LED熄灭。
需要注意,应根据板子的说明或通过查看板子上拨码开关和LED的标识实现约束文件,在完成约束文件后需重新实现(Implement)和生成比特流文件,然后再下载。
2 设计译码器IP核
IP核,全称知识产权核(Intellectual Property core),是指某一方提供的、形式为逻辑单元的可重用模块。
IP核通常已经通过了设计验证,设计人员以IP核为基础进行设计,可以缩短设计所需的周期。
IP核可以通过协议由一方提供给另一方,或由一方独自占有。
IP核的概念源于产品设计的专利证书和源代码的版权等。设计人员能够以IP核为基础进行FPGA的逻辑设计,以减少设计周期。在VIVADO下设计和使用IP核必须遵循VIVADO的步骤。
Vivado的IP核
VIVADO提倡的积木式设计,积木就是IP核。用户可以将功能模块设计做成一个一个IP核,然后“组装”起来成为产品。
VIVADO本身提供了很多IP核可供用户使用,例如数学运算(乘法器、除法器、浮点运算器等)、信号处理(FFT、DFT、DDS等)。
用户也可以使用第三方的IP核来加快设计,例如使用第三方提供的神经网络处理IP核。
开发者也可以开发自己的IP核,自己在各个工程中调用或提供给第三方使用。
2.1 设计译码器IP核步骤
验证功能正确后,就可以生成IP核了,最后生成的IP核和约束文件无关。
在当前工程环境下,点击菜单栏Tools,在弹出的子菜单上找到并点击Create and Package IP,在弹出的窗口上直接点击Next。(Tools->Create and Package New IP)
之后弹出的创建和封装IP窗口,保持选项不变。IP核的位置保存在d:/provivado/p_74x138/p_74x138.srcs
之后弹出新的创建和封装IP窗口,显示了新IP的信息。
生成IP核
2.2 属性设置
2.2.1 Identification身份
Identification(身份)需要填写这两项名称,供应商显示名称、公司URL显示名称
2.2.2 Compatibility兼容性
2.2.3 File Groups
2.2.4 Ports and Interfaces
端口和接口不需要更改
2.2.5 Customization GUI界面定制
逻辑符号以图形的方式展示了该IP的输入输出借口
2.2.6 Review and Package
修改之后,需要重新生成IP核