在整数模混合的系统时候,往往仿真只能仿真Verilog 或者仿真只能仿真模拟,若是数字部分只有输出还好,只需要编辑电压源导入波形文件即可。但如果这个模块既要有输入又要有输出那仿真起来就会比较麻烦。
可能需要用门电路构建一些逻辑。
而SIMterix-Simplies就可以模拟和数字一起仿真,若是我们要构建一个简单的ASIC直接用Simplies就可以直接构建,并且搭上外围电路直接验证其逻辑。在这里我们就讨论如何在Simplies 里面仿真Verilog。
首先我们先撸一段Verillog代码,最好用Modelsim仿真过这样可以直接在Simplies里面仿真其输出波形做对比。以下为Verilog 分频代码
`timescale 1ns / 1ps `define div_width 16 `define Counter_rst 16'h0000 module divider( //设置输入时钟 input in_clk, //设置分频比例 input [`div_width-1:0]div_ratio, //输入复位信号 input rst, //设置输出时钟 output reg out_clk ); //定义上升沿下降沿触发计数器 reg [`div_width-1:0]Counter; initial begin //初始化Counter Counter<=`Counter_rst; out_clk<=1'b0; end //设置上升沿计数 always@( posedge in_clk or negedge rst) begin if(!rst)begin Counter<=`Counter_rst; out_clk<=1'b0; end else begin //如果Counter值小于 (div-1)*2 那么就自加1,否则就置0 Counter<=((Counter<=(div_ratio-1)*2)?(Counter+1'b1):`Counter_rst); //如果Counter<=(div_ratio-1)那就置1,否则就置0 out_clk<=(Counter<=(div_ratio-1)?1'b1:1'b0); end end endmodule
|
代码1:分频器
图1:分频器
图2:Simplies启动页面
启动simplies,create new schematic,新建 schematic 后找到Verilog 选择 construct Verilog-hdl symbol 选择你的.V文件。直接就会构建一个module名称一样的器件。
图3:构建Verilog 模块
图4:在原理图上放置Verilog模块
图5:放置 digital constant 给divider赋值
用bus ripper 将digital constant 变成一个总线
图6:仿真结果
今天就先聊到这了,拜拜!
参考文档
Verilog 数字系统设计教程 –夏宇闻
SIMetrix – Simplies Users Manual