mif文件C语言生成
1:正弦波
用函数 sin (x * π/180°)
/**************************************************
正弦波 mif 生成
***************************************************/
#include <stdio.h>
#include <math.h>
#define DEPTH 128 /*数据深度,即存储单元的个数,可更改*/
#define WIDTH 8 /*存储单元的宽度,可更改*/
#define PI 3.141592
int main(void)
{
int i,temp;
float s;
FILE *fp;
fp = fopen("SinPro.mif","w"); /*可更改,但扩展名必须为.mif*/
if(NULL == fp)
printf("Can not creat file!\r\n");
else
{
printf("File created successfully!\n");
/*
* 生成文件头:注意不要忘了“;”
*/
fprintf (fp, "DEPTH = %d;\n",DEPTH);
fprintf (fp, "WIDTH = %d;\n",WIDTH);
fprintf (fp, "ADDRESS_RADIX = HEX;\n");
fprintf (fp, "DATA_RADIX = HEX;\n");
fprintf (fp, "CONTENT\n");
fprintf (fp, "BEGIN\n");
/*
* 以十六进制输出地址和数据
*/
for(i = ; i < DEPTH; i++)
{
/*周期为128个点的正弦波*/
s = sin( PI * i * / DEPTH); // sin (x * π/180°) 取值范围-1至1,注意 sin() 函数是 double 类型
/*将-1~1之间的正弦波的值扩展到0-255之间*/
temp = (int)( (s+) * pow(, WIDTH - ) ); //正弦值扩展到 0 至 2 的 WIDTH次幂,注意 pow() 函数是 double 类型
/*以十六进制输出地址和数据*/
fprintf (fp, "%x \t : \t %x;\n", i, temp);
}//end for
fprintf (fp, "END;\n");
fclose (fp);
}
}
sin_pro.c
2:三角波
用斜率计算
/**************************************************
三角波 mif 生成
***************************************************/
#include <stdio.h>
#include <math.h>
#define DEPTH 128 /*数据深度,即存储单元的个数,可更改*/
#define WIDTH 8 /*存储单元的宽度,可更改*/
int main(void)
{
int i,temp = ;
FILE *fp;
fp = fopen("TrianglePro.mif","w"); /*可更改,但扩展名必须为.mif*/
if(NULL == fp)
printf("Can not creat file!\r\n");
else
{
printf("File created successfully!\n");
/*
* 生成文件头:注意不要忘了“;”
*/
fprintf (fp, "DEPTH = %d;\n",DEPTH);
fprintf (fp, "WIDTH = %d;\n",WIDTH);
fprintf (fp, "ADDRESS_RADIX = HEX;\n");
fprintf (fp, "DATA_RADIX = HEX;\n");
fprintf (fp, "CONTENT\n");
fprintf (fp, "BEGIN\n");
/*
* 以十六进制输出地址和数据
*/
for(i = ; i < DEPTH; i++)
{
if (i <= DEPTH / )
//temp = (int)(i * (pow (2, WIDTH) - 1) * 2 / DEPTH);
temp = (int)(((pow (, WIDTH) - ) * / DEPTH) * i); //斜率 * i
else
//temp = (int)(temp - (pow (2, WIDTH) - 1) * 2 / DEPTH);
temp = (int)(((pow (, WIDTH) - ) * / DEPTH) * (DEPTH - - i)); //斜率 * (depth-1 - i)
fprintf (fp, "%x \t : \t %x;\n", i, temp);
}//end for
fprintf (fp, "END;\n");
fclose (fp);
}
}
triangle_pro.c
3:锯齿波
用斜率计算
/**************************************************
锯齿波 mif 生成
***************************************************/
#include <stdio.h>
#include <math.h>
#define DEPTH 128 /*数据深度,即存储单元的个数,可更改*/
#define WIDTH 8 /*存储单元的宽度,可更改*/
int main(void)
{
int i,temp = ;
FILE *fp;
fp = fopen("SawtoothPro.mif","w"); /*可更改,但扩展名必须为.mif*/
if(NULL == fp)
printf("Can not creat file!\r\n");
else
{
printf("File created successfully!\n");
/*
* 生成文件头:注意不要忘了“;”
*/
fprintf (fp, "DEPTH = %d;\n",DEPTH);
fprintf (fp, "WIDTH = %d;\n",WIDTH);
fprintf (fp, "ADDRESS_RADIX = HEX;\n");
fprintf (fp, "DATA_RADIX = HEX;\n");
fprintf (fp, "CONTENT\n");
fprintf (fp, "BEGIN\n");
/*
* 以十六进制输出地址和数据
*/
for(i = ; i < DEPTH; i++)
{
temp = (int)(((pow (, WIDTH) - ) / (DEPTH - )) * i); //斜率 * i
fprintf (fp, "%x \t : \t %x;\n", i, temp);
}//end for
fprintf (fp, "END;\n");
fclose (fp);
}
}
sawtooth_pro.c
4:方波
/**************************************************
方波 mif 生成
***************************************************/
#include <stdio.h>
#include <math.h>
#define DEPTH 128 /*数据深度,即存储单元的个数,可更改*/
#define WIDTH 8 /*存储单元的宽度,可更改*/
int main(void)
{
int i,temp;
FILE *fp;
fp = fopen("SquarePro.mif","w"); /*可更改,但扩展名必须为.mif*/
if(NULL == fp)
printf("Can not creat file!\r\n");
else
{
printf("File created successfully!\n");
/*
* 生成文件头:注意不要忘了“;”
*/
fprintf (fp, "DEPTH = %d;\n",DEPTH);
fprintf (fp, "WIDTH = %d;\n",WIDTH);
fprintf (fp, "ADDRESS_RADIX = HEX;\n");
fprintf (fp, "DATA_RADIX = HEX;\n");
fprintf (fp, "CONTENT\n");
fprintf (fp, "BEGIN\n");
/*
* 以十六进制输出地址和数据
*/
for(i = ; i < DEPTH; i++)
{
if (i < DEPTH / )
temp = ;
else
temp = (int)(pow (, WIDTH) - );
fprintf (fp, "%x \t : \t %x;\n", i, temp);
}//end for
fprintf (fp, "END;\n");
fclose (fp);
}
}
square_pro.c
整合到一个函数里
/**************************************************
mif 文件生成
***************************************************/
#include <stdio.h>
#include <math.h>
/*-------------------------参数区------------------------*/
#define DEPTH 128 /* 数据深度,即存储单元的个数*/
#define WIDTH 8 /* 存储单元的宽度 */
#define MODE 4 /* 1:正弦波 2:三角波 3:锯齿波 4:方波 */
/*-------------------------参数区------------------------*/
#define PI 3.141592
int main(void)
{
int i,temp;
FILE *fp;
fp = fopen("yl.mif","w"); /*可更改,但扩展名必须为.mif*/
if(NULL == fp)
printf("Can not creat file!\r\n");
else
{
printf("File created successfully!\n");
/*
* 生成文件头:注意不要忘了“;”
*/
fprintf (fp, "DEPTH = %d;\n",DEPTH);
fprintf (fp, "WIDTH = %d;\n",WIDTH);
fprintf (fp, "ADDRESS_RADIX = HEX;\n");
fprintf (fp, "DATA_RADIX = HEX;\n");
fprintf (fp, "CONTENT\n");
fprintf (fp, "BEGIN\n");
/*
* 以十六进制输出地址和数据
*/
for(i = ; i < DEPTH; i++)
{
switch(MODE)
{
case ://sine
{
temp = (int)( (sin( PI * i * / DEPTH) + ) * pow(, WIDTH - ) );
break;
}
case ://triangle
{
if (i <= DEPTH / )
temp = (int)(((pow (, WIDTH) - ) * / DEPTH) * i); //斜率 * i
else
temp = (int)(((pow (, WIDTH) - ) * / DEPTH) * (DEPTH - - i));
break;
}
case ://sawtooth
{
temp = (int)(((pow (, WIDTH) - ) / (DEPTH - )) * i);
break;
}
case ://square
{
if (i < DEPTH / )
temp = ;
else
temp = (int)(pow (, WIDTH) - );
break;
}
default:
{
break;
}
}
fprintf (fp, "%x \t : \t %x;\n", i, temp);
}//end for
fprintf (fp, "END;\n");
fclose (fp);
}
}
如有错误还请指出,如有侵权还请告知,如需转载请注明出处!
本人博客:http://www.cnblogs.com/yllinux/
mif文件C语言生成的更多相关文章
- 生成mif文件的几种方法总结
mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据.生成QuartusII11.0可用的mif文件,有如下几种方式: 方法1:利用Q ...
- mif文件生成方法
mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据.常见生成方法: Quartus自带的mif编辑器生成 mif软件生成 高级编程语 ...
- MIF文件生成说明
mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据.生成QuartusII11.0可用的mif文件,有如下几种方式: 方法1:利用Q ...
- FPGA工程中用C语言对文件进行处理_生成mif文件
本博客中有用verilog处理文件数据的代码,本博文采用C 处理文件中的数据. 有时候要生成一个mif文件—— altera memory initial file.本次工程中我得到的是一个大型的数 ...
- 使用matlab生成sine波mif文件
使用matlab生成sine波mif文件 作者:lee神 在使用altera 的FPGA中的rom过程中常常会使用到.mif文件或.hex文件.对于初学者,无论mif还是hex都是很令人疑惑的东西,这 ...
- hex转mif文件 verilog
用FPGA来跑ARM 核的时候,刚开始将Keil编译产生的hex文件拿来仿真和下到板子上的时候,发现程序运行不正确.细细观察仿真波形发现,在Altera的ROM IP中直接调用Keil产生的hex文件 ...
- 用matlab生成mif文件
在FPGA中,rom模块的初始化文件分为两种,一种是hex文件,另外一种是mif文件,这两种文件都可以通过Quartus进行手工创建,进行手工输入数据,也可以借助于专用的文件编辑器完成编辑. 在此介绍 ...
- 使用MATLAB一键制作mif文件
本文档主要讲解实现一个16384(2^14)点的14位正弦波数据mif格式文件的生成,使用此文件,我们便可以在FPGA上基于直接数字合成(DDS)原理生成标准的正弦波,即实现信号发生器的功能.关于DD ...
- fpga rom 初始化mif文件生成
mif文件的格式 width= depth= address_radix= data_radix= content begin 00: ; 01: ; 02: ; .... end; 关 ...
随机推荐
- CodeChef - NWAYS 组合数 朱世杰恒等式
这道题目数据有坑,白浪费一个小时! 题意:求\(\sum_{i=1}^n\sum_{j=1}^n{|i-j|+k \choose k}\) 知识点: 朱世杰恒等式,\(\sum_{i=r}^n{i \ ...
- 在OnActionExecuted 获取请求参数的值(包含类类型)
1.在OnActionExecuting里 获取请求参数的值 比较简单 /// <summary> /// 获取首参数的值 /// </summary> /// <par ...
- Oracle DBMS_UTILITY.GET_HASH_VALUE
DBMS_UTILITY.GET_HASH_VALUE(input, base, hash_size) 1.DBMS_UTILITY.GET_HASH_VALUE 对于确定的输入字符串,如果base和 ...
- centos7安装nslookup工具、ntp工具
2018-12-13 centos7安装nslookup工具 yum install bind-utils -y DNS解析localhost到本机 # .检测 [root@node2 ~]# nsl ...
- SpringMVC HandlerMethodArgumentResolver自定义参数转换器
来源: https://www.cnblogs.com/daxin/p/3296493.html 自定义Spring MVC3的参数映射和返回值映射 + fastjson首先说一下场景:在一些富客户端 ...
- x86的字节对齐与不对齐的问题
比如这么一个结构体struct foo {short s;int n;}; struct foo bar;假设bar的地址是0x12345670如果不按4字节对齐那么bar.n的地址就是0x123 ...
- 全文检索~solr的使用
全文检索这个系列在几前年写过lucene的文章,而现在看来它确实已经老了,它的儿子孙子都出来了,已经成为现在检索行列的主流,像solr,elasticsearch等,今天我们主要来看一个solr在as ...
- emacs使用笔记
C-h t tutorial [移动基本操作]C-f C-b C-p C-n 前后上下 C-v C-a 行首 C-e行尾C-a 和 C-e 可以将光标移动到"一行"的头部和尾部.M ...
- Redis启动和关闭
带配置文件启动 ./redis-server redis.conf 关闭 无密码模式 ./redis-cli -h xxx -p xxx shutdown 密码模式 ./redis-cli -h ...
- 触发Full GC的时机
由于Full GC的耗时是Minor GC的十倍左右,所以Full GC的频率设计得比Minor GC低得多.现总结一下触发Full GC的情况. 在那些实现了CMS的比较新的虚拟机中,如果配置了-X ...