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语言生成的更多相关文章

  1. 生成mif文件的几种方法总结

    mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据.生成QuartusII11.0可用的mif文件,有如下几种方式: 方法1:利用Q ...

  2. mif文件生成方法

    mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据.常见生成方法: Quartus自带的mif编辑器生成 mif软件生成 高级编程语 ...

  3. MIF文件生成说明

    mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据.生成QuartusII11.0可用的mif文件,有如下几种方式: 方法1:利用Q ...

  4. FPGA工程中用C语言对文件进行处理_生成mif文件

    本博客中有用verilog处理文件数据的代码,本博文采用C 处理文件中的数据. 有时候要生成一个mif文件—— altera memory  initial file.本次工程中我得到的是一个大型的数 ...

  5. 使用matlab生成sine波mif文件

    使用matlab生成sine波mif文件 作者:lee神 在使用altera 的FPGA中的rom过程中常常会使用到.mif文件或.hex文件.对于初学者,无论mif还是hex都是很令人疑惑的东西,这 ...

  6. hex转mif文件 verilog

    用FPGA来跑ARM 核的时候,刚开始将Keil编译产生的hex文件拿来仿真和下到板子上的时候,发现程序运行不正确.细细观察仿真波形发现,在Altera的ROM IP中直接调用Keil产生的hex文件 ...

  7. 用matlab生成mif文件

    在FPGA中,rom模块的初始化文件分为两种,一种是hex文件,另外一种是mif文件,这两种文件都可以通过Quartus进行手工创建,进行手工输入数据,也可以借助于专用的文件编辑器完成编辑. 在此介绍 ...

  8. 使用MATLAB一键制作mif文件

    本文档主要讲解实现一个16384(2^14)点的14位正弦波数据mif格式文件的生成,使用此文件,我们便可以在FPGA上基于直接数字合成(DDS)原理生成标准的正弦波,即实现信号发生器的功能.关于DD ...

  9. fpga rom 初始化mif文件生成

    mif文件的格式 width= depth= address_radix= data_radix= content begin 00:    ; 01:   ; 02:   ; .... end; 关 ...

随机推荐

  1. PIE SDK面元素的绘制

    1. 功能简介 在数据的处理中会用到线元素的绘制,目前PIE SDK支持IFillSymbol接口,FillSymbol对象是用于修饰填充面状对象的符号,它包括MarkerFillSymbol(由点状 ...

  2. 解决matplotlib绘图中文乱码

    # 指定默认字体 下面三条代码用来解决绘图中出现的乱码 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] matplotlib.rcParams[ ...

  3. 2019.03.28 读书笔记 关于try catch

    try catch 在不异常的时候不损耗性能,耗损性能的是throw ex,所以在非异常是,不要滥用throw,特别是很多代码习惯:if(age<0) throw new Exception(& ...

  4. Murano Weekly Meeting 2016.08.16

    Meeting time: 2016.August.16 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summary: ...

  5. 深度学习(五)基于tensorflow实现简单卷积神经网络Lenet5

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8954892.html 参考博客:https://blog.csdn.net/u01287127 ...

  6. C#(Winform)的Show()和ShowDialog()方法

    1. 显示窗口的两种方式: Winform中的Form,在显示窗口时,可以使用Show()和ShowDialog()两种方式 2. 非模态窗口方式(可以跟其他界面自由切换,而且不阻塞代码) Show( ...

  7. uwsgi服务启动、关闭、重启操作

    1.      添加uwsgi相关文件 在之前的文章跟讲到过centos中搭建nginx+uwsgi+flask运行环境,本节就基于那一次的配置进行说明. 在www中创建uwsgi文件夹,用来存放uw ...

  8. NBUT 1107——盒子游戏——————【博弈类】

    盒子游戏 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format: Submit Status Practice NBUT 110 ...

  9. HDU 1698——Just a Hook——————【线段树区间替换、区间求和】

    Just a Hook Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit  ...

  10. bzoj 5291: [Bjoi2018]链上二次求和

    Description 有一条长度为n的链(1≤i<n,点i与点i+1之间有一条边的无向图),每个点有一个整数权值,第i个点的权值是 a_i.现在有m个操作,每个操作如下: 操作1(修改):给定 ...