使用matlab/C语言/verilog分别生成coe文件

        之前已经写过一个如何使用matlab生成coe文件,matlab自行运算生成三角波、正弦波等数据,并保存为COE文件。可跳转下面的网址进行查阅。

使用matlab生成正弦波、三角波、方波的COE文件_三角波文件.coe-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/yindq1220/article/details/125173035?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171342842616800182769139%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171342842616800182769139&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-125173035-null-null.nonecase&utm_term=coe&spm=1018.2226.3001.4450        但是,如果想直接把一个文件的二进制码流整体转化成coe文件(注意并不是文件内的内容,而是文件本身),又该怎么操作呢?所有的文件都是按照二进制码保存的,只要转换成COE文件,FPGA就能通过发送该COE文件,实现发送ZIP文件或者其他任何格式的文件。

        本文就是解决了这个问题。

一、MATLAB生成coe文件

% 读取图像
file = fopen('1.zip');
data = fread(file);%读取文件存在data中
fclose(file);fid = fopen('zip.coe','wt');    %创建一个名为zip.coe的文件
%- COE 文件前置格式
fprintf( fid, 'MEMORY_INITIALIZATION_RADIX = 16;\n');                     
fprintf( fid, 'MEMORY_INITIALIZATION_VECTOR =\n');
%- 写数据
for i = 1:1:length(data) %读取所有的data数据if(i == length(data))fprintf( fid, '%X;',data(i));%最后一行为分号elsefprintf( fid, '%X,\n',data(i));%写入目标文件end
endfclose(fid);%关闭文件

二、C语言生成coe文件


#include <stdio.h>
#include <vector>int main()
{FILE *rdfile = fopen("1.zip","rb");FILE *wrfile = fopen("zip.coe","w");if (rdfile == NULL) {printf("Failed to open file\n");return -1;}int data;fprintf(wrfile, "memory_initialization_radix=16;\n");fprintf(wrfile, "memory_initialization_vector=\n");std::vector<unsigned char> buffer;while (fread(&data, sizeof(char), 1, rdfile) == 1) {buffer.push_back(data);}for (int i = 0; i< buffer.size(); i++) {if(i==buffer.size())fprintf(wrfile, "%X;", buffer[i]);elsefprintf(wrfile, "%X,\n", buffer[i]);}fclose(rdfile);fclose(wrfile);return 0;
}

三、verilog生成coe文件

         本来打算写verilog读文件二进制流,保存为COE文件的,但是使用$fread、$fgetc等函数发现结果有点问题。并且matlab和C读取文件二进制码流生成COE也足够用了,此处也就不再深究了。只举例一个最简单的固定数据输出为COE文件的代码。注意下,生成coe文件的代码涉及到读写文件,只能仿真运行。


module coe_gen(
);integer file;
integer i;initial beginfile = $fopen("C:/Users/ADMIN/Desktop/out.coe", "w"); // 打开文件以便写入if (file == 0) begin$display("无法打开文件!");$finish;end$fwrite(file,"memory_initialization_radix=16;\n"); // 写入一行文本$fwrite(file,"memory_initialization_vector=\n"); // 写入另一行文本$fwrite(file,"%x,\n",8'h00);$fwrite(file,"%x,\n",8'h10);$fwrite(file,"%x,\n",8'h20);$fwrite(file,"%x,\n",8'h30);$fwrite(file,"%x,\n",8'h40);$fwrite(file,"%x,\n",8'h50);$fwrite(file,"%x;",8'h60); //最后一个数据$fclose(file); // 关闭文件
endendmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ | Leetcode C++题解之第32题最长有效括号

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestValidParentheses(string s) {int left 0, right 0, maxlength 0;for (int i 0; i < s.length(); i) {if (s[i] () {left;} else {right;}if (left right) {maxlength max(maxlength, 2 * ri…

Python从0到100(十五):函数的高级应用

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

高通将支持 Meta Llama 3 在骁龙终端运行;特斯拉中国全系车型降价 1.4 万元丨 RTE 开发者日报 Vol.189

开发者朋友们大家好&#xff1a; 这里是「RTE 开发者日报」&#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有…

第52篇:算法的硬件实现<三>

Q&#xff1a;本期我们介绍二进制搜索算法电路&#xff0c;用于查找某个数据在数组中的位置。 A&#xff1a;基本原理&#xff1a;从数组的中间元素开始&#xff0c;如果给定值和中间元素的关键字相等&#xff0c;则查找成功&#xff1b;如果给定值大于或者小于中间元素的关键…

Java本地缓存技术选型(Guava Cache、Caffeine、EhCache)

前言 对一个java开发者而言&#xff0c;提到缓存&#xff0c;第一反应就是Redis。利用这类缓存足以解决大多数的性能问题了&#xff0c;我们也要知道&#xff0c;这种属于remote cache&#xff08;分布式缓存&#xff09;&#xff0c;应用的进程和缓存的进程通常分布在不同的服…

JAVA学习笔记30(线程)

1.线程 1.线程的概念 1.线程是由进程创建的&#xff0c;是进程的一个实体 2.一个进程可以拥有多个线程 2.并发 ​ *同一时刻&#xff0c;多个任务交替执行&#xff0c;造成一种"貌似同时"的错觉&#xff0c;单核cpu实现的多任务就是并发 3.并行 ​ *同一时刻&…

私人密码管理储存库!Bitwarden 部署安装教程

日常生活中我们每个人都会拥有大量网站或社交平台帐号&#xff0c;时间久远了密码很容易忘记。因此&#xff0c;像 1Password 等密码管理 同步 一键登录的工具成为了很多人的首选。 然而 1Password 毕竟要付费&#xff0c;也有人会担心这类工具有隐私泄露的风险。其实&#…

随着深度学习的兴起,浅层机器学习没有用武之地了吗?

深度学习的兴起确实在许多领域取得了显著的成功&#xff0c;尤其是那些涉及大量数据和复杂模式的识别任务&#xff0c;如图像识别、语音识别和自然语言处理等。然而&#xff0c;这并不意味着浅层机器学习&#xff08;如支持向量机、决策树、朴素贝叶斯等&#xff09;已经失去了…

Android集成Sentry实践

需求&#xff1a;之前使用的是tencent的bugly做为崩溃和异常监控&#xff0c;好像是要开始收费了&#xff0c;计划使用开源免费的sentry进行替换。 步骤&#xff1a; 1.修改工程文件 app/build.gradle apply plugin: io.sentry.android.gradle sentry {// 禁用或启用ProGua…

算法打卡day50|单调栈篇01| Leetcode 739. 每日温度、496.下一个更大元素 I

算法题 Leetcode 739. 每日温度 题目链接:739. 每日温度 大佬视频讲解&#xff1a;739. 每日温度视频讲解 个人思路 因为题目所求的是找到一个元素右边第一个比自己大的元素&#xff0c;这是单调栈的经典题目&#xff0c;用栈来记录遍历过的元素 解法 单调栈 单调栈的本质…

opensshserver.config: line 3: Bad configuration option: GSSAPIKexAlgorithms

报错记录 /etc/crypto-policies/back-ends/opensshserver.config: line 3: Bad configuration option: GSSAPIKexAlgorithms 百度尝试 找到 “GSSAPIKexAlgorithms”这一行&#xff0c;然后注释掉 #GSSAPIKexAlgorithms vim /etc/ssh/sshd_config 这种方式并没有解决 解决方…

为什么中级职称评审不通过?有什么原因?

参与过职称评审或者有了解过职称评审的小伙伴们&#xff0c;应该都知道&#xff0c;职称评审都是有通过率&#xff0c;不是你去评&#xff0c;一定会评下来&#xff0c;一定会发证的&#xff0c;那么评审为什么不通过&#xff1f;有哪些原因呢&#xff1f; 现在职称评审人越来越…

免费开源圈子社交交友社区系统 可打包小程序 支持二开 源码交付!

线上社交的好处&#xff1a; 当今社会&#xff0c;人们越来越依赖于网络社交。互联网无疑为人类带来了许多好处&#xff0c; 其中一个就是线上社交。通过各种社交平台&#xff0c;人们可以随时随地互动交流&#xff0c;扩大自 己的社交圈&#xff0c;丰富生活。但是&#xf…

智慧气象站:赋能农业高标准发展新征程

随着科技的不断进步&#xff0c;智慧农业气象站已成为推动农业高标准发展的重要力量。它集成了先进的传感器、数据分析和通信技术&#xff0c;为农业生产提供了精准、及时的气象信息&#xff0c;助力农民实现科学种植、精准管理。 智慧农业气象站能够实时监测农田环境的温度、…

绿联 安装qbittorrent及一些常见错误的解决办法

绿联 安装qbittorrent及一些常见错误的解决办法 1、镜像 linuxserver/qbittorrent:latest 2、安装 2.1、创建容器 按需决定是否进行资源限制。 2.2、基础设置 2.3、网络 桥接即可。 注&#xff1a;如果使用IPV6&#xff0c;请选择"host"模式。 注&#xff1a;如…

0.5W 3KVDC 隔离单、双输出 DC/DC 电源模块——TPV-W5 3.3V, 5V,12V 15V系列

TPV-W5系列提供正负双输出和单输出&#xff0c;工业级环境温度&#xff0c;用于PCB安装的国际标准结构。此系列产品小巧&#xff0c;效率高&#xff0c;低输出纹波及能承受3000V以上的耐压&#xff0c;用于需要正负电压或单输出和高隔离电压的场合。封装有SIP和DIP可选。

Next.js 14 App Router引入 farmer-motion 初始化异常解决,顺带学点知识

前言 farmer-motion 是一个非常好用的动画库&#xff0c;当然用来做组件切换和路由切换过渡更不在话下。 记录一下&#xff0c;Next.js 14 App Router 下引入初始化异常的解决姿势&#xff0c;顺带扯一下 next.js 的知识点&#xff1b; 问题 过渡组件代码 我们拿 farmer-m…

机器学习-期末复习

本文的内容按照作者的课程考试要求书写&#xff0c;仅供复习参考。&#x1f337;&#x1f337;&#x1f337; 机器学习是一种人工智能&#xff08;AI&#xff09;的分支领域&#xff0c;它致力于开发能够通过数据学习和改进的算法和模型。简而言之&#xff0c;机器学习系统利用…

自动售卖团餐:借助智享直播AI实景无人直播系统,团餐自动售卖,无需人工参与,省时高效。

在科技飞速发展的今天&#xff0c;直播行业迎来了一场前所未有的变革。过去&#xff0c;传统的直播方式需要大量设备和人力投入&#xff0c;然而如今&#xff0c;一款名为"智享直播"的AI实景无人直播系统正以其简单、有趣的特性改变着这一局面。仅仅凭借一部手机&…

vue框架中的组件通信

vue框架中的组件通信 一.组件通信关系二.父子通信1.props 校验2.prop & data、单向数据流 二.非父子通信-event bus 事件总线三.非父子通信 (拓展) - provide & inject四.v-model简化父子通信代码五. .sync修饰符 一.组件通信关系 组件关系分类&#xff1a; 1.父子关系…