做个聊胜于无的IP核

一定要文采斐然嘛,我磕磕绊绊,叙意不清的语句,也是我一个字一个字敲出来的呀!记录一下,不然我自己都忘了。

先来个预备操作

先在Matlab中做些准备,好在Simulink中通过From Workspace直接引用数据,方便后续的仿真啊、tb文件啥的。

%% time duration
N = 1;
%% list entries
x1 = 1;
x2 = 2;

x1_in(:,1) = 1:N;
x1_in(:,2) = x1;

x2_in(:,1) = 1:N;
x2_in(:,2) = x2;

因为Simulink中输入需要加上时间序列,由1开始算起,这里只是两个数进行相加,所以只需要1个时间长度就好。记得运行一下,不然工作区没有值是没法正常运行的。

Simulink中的可视化

1、进入到Simulink找到Library Browser,点击打开会出现很多图形框框。只需要拖动到空白区域即可。在这里插入图片描述
这里主要是需要Xilinx blockset的方块,其中这个红色logoSystem Generator是必须拖入空白区域的,用作文件生成的。

2、在Simulink的选项下找到,From Workspace和To Workspace用作工作区数据的应用以及结果在工作区进行显示。Data改为工作区中的序列名即可。
在这里插入图片描述
3、那就把数字加起来即可,如果对位数和有无符号有要求的就逐个将各模块的位数和有无符号进行修改,个人采用8位无符号位。直接运行。

在这里插入图片描述

4、查看仿真结果
在这里插入图片描述
前面写的是1+2,那现在y=3,那仿真便是成功的。

5、仿真成功那就可以生成IP核了。双击红色logoSystem Generator
在这里插入图片描述

Compilation中选择 IP Catalog,语言就选择Verilog,地址处尤为注意,英文不能带空格,当初查问题查了大半天。

在Vivado中复现一下

1、先添加一下IP核
在这里插入图片描述
2、再写个文件引用一下

module ADD_8(
    input [7:0]x1,
    input [7:0]x2,
    input clk,
    
    output [7:0]y 
    ); 
      
 one_0 t_one_0 (
  .x1(x1),    // input wire [7 : 0] x1
  .x2(x2),    // input wire [7 : 0] x2
  .clk(clk),  // input wire clk
  .y(y)      // output wire [7 : 0] y
);   

endmodule

在这里插入图片描述
可以看到产生的结果会产生一个延迟,这个Simulink中,加法产生的一个延迟是一样的。,也算是制作成功。

小结一下

虽然这个8位数加法有跟没有一样,不过以此基础或者说记得怎么做也是不错的使用。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值