代码简单,有4个led灯。 当按下按的时候, led灯会随着输入4个bit数来亮灭。 这个按钮信号就是en, 数据是dat4. 想用VIO来测试。这里仅仅是记录下VIO的使用。下面代码。
`timescale 1ns/1ns
module topVio(clk50M, rst_n, led3 ,led2,led1,led0);
input clk50M;
input rst_n;
output reg led3,led2, led1, led0;
wire en;
wire [3:0] dat4;
always @ (posedge clk50M or negedge rst_n ) begin
if (rst_n == 1'b0) begin
led0 <= 1'b1;
led1 <= 1'b1;
led2 <= 1'b1;
led3 <= 1'b1;
end
else
begin
if (en ) begin
led0 <= dat4[0];
led1 <= dat4[1];
led2 <= dat4[2];
led3 <= dat4[3];
end
end
end
vio_0 vio (
.clk(clk50M),
.probe_out0(en),
.probe_out1(dat4)
);
endmodule
添加VIO核,
1: 单击左侧的 IP category,
2:在右边界面如下图, 输入 VIO再回车。 他会出现 VIO(Virtual input/Output) .在 它上面右键选择 “customize IP"
3: VIO这里没有输入。输出的是两个信号,使能和数据。点击general Options, Input Probe count 这里输入0
Output Probe Count 输入2
4:点击PROBE_OUT Ports选项卡,来设置位宽, 在 PROBE_OUT0 输入1 ; 在PROBE_OUT1输入4
5 点击确定按钮。 它会产生VIO核 ,他的名字叫做 vio_0 . 在图的右上角那里,可以修改模块的名字。
编译bit文件, 下载bit文件。 下载完成后,会自动弹出下面界面,注意 en 和dat4这两行是没有的。 需要点击加号,来添加进来。
把en 和 dat4 加进来之后。 对应en来说他是高电平有效, 当用鼠标点击的时候他是高,不点的时候是低。 可以选择activity那一列,右键选择XXX(忘了可以自己摸索一下)
dat4的值,可以在value那一行输入, 当点击 [H]的时候,弹出来一个小编辑框,在里面可以输入数值,H标明16进制,这里输入C
然后点击一下en那行的 ,Value列,的单元格。 会发现1100会设置到led灯。 有两个灯会亮。 再设置成0011,再次点击 单元格,另外两个led会亮。