MATLAB生成Verilog代码——HDL Coder使用初探

有关用HDL Coder生成Verilog的资料实在太少,且大多是由Simulink搭建模块生成。笔者经过初步探索,将MATLAB代码直接通过HDL Coder生成Verilog代码的过程总结于此。
以一个最大值为15可加减计数器为例
在MATLAB上方的APP里找到HDL Coder,HDL Coder需要MATLAB Function和MATLAB Testbench两个文件,第一个即纯粹的函数or算法,第二个需要对其进行调用并保证能现在MATLAB上成功运行。
这里已经将两个文件添加了进去,添加完毕后再Workflow Advisor里设置生成的代码为Verilog,再运行即可。里面还可以设置仿真工具并生成testbench,但笔者尝试用生成的testbench进行仿真,并不能成功运行,且代码本身就杂乱非常。

这里给出counter.m和counter_tb.m两段代码

function [count] = counter(clk, rst)
    persistent state
    
    if isempty(state) || ~rst
        state = 0;
    elseif clk
        state = state + 1;
        if state == 16
            state = 1;
        end
    end
    
    count = state;
end
function counter_tb
    % 创建时间和输入信号
    time = 0:19;
    clk = [0, ones(1, 9), 0, ones(1, 9)]; % 50% 占空比,10个时钟周期
    rst = [0, ones(1, 19)]; % 第一个周期的复位信号高
    
    % 初始化用于存储输出的数组
    count_out = zeros(size(time));
    
    % 模拟计数器
    for i = 1:length(time)
        count_out(i) = counter(clk(i), rst(i))
    end
    
end

在Workflow Advisor中运行后会生成.v文件,保存的路径可以在左侧选HDL Code Generation下查看,这里给出生成的verilog代码,可以发现可读性比较差,自己在分析时加了些中文注释。

// -------------------------------------------------------------
// Generated by MATLAB 9.7, MATLAB Coder 4.3 and HDL Coder 3.15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MozerLie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值