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. CodeChef - NWAYS 组合数 朱世杰恒等式

    这道题目数据有坑,白浪费一个小时! 题意:求\(\sum_{i=1}^n\sum_{j=1}^n{|i-j|+k \choose k}\) 知识点: 朱世杰恒等式,\(\sum_{i=r}^n{i \ ...

  2. 在OnActionExecuted 获取请求参数的值(包含类类型)

    1.在OnActionExecuting里 获取请求参数的值 比较简单 /// <summary> /// 获取首参数的值 /// </summary> /// <par ...

  3. Oracle DBMS_UTILITY.GET_HASH_VALUE

    DBMS_UTILITY.GET_HASH_VALUE(input, base, hash_size) 1.DBMS_UTILITY.GET_HASH_VALUE 对于确定的输入字符串,如果base和 ...

  4. centos7安装nslookup工具、ntp工具

    2018-12-13 centos7安装nslookup工具 yum install bind-utils -y DNS解析localhost到本机 # .检测 [root@node2 ~]# nsl ...

  5. SpringMVC HandlerMethodArgumentResolver自定义参数转换器

    来源: https://www.cnblogs.com/daxin/p/3296493.html 自定义Spring MVC3的参数映射和返回值映射 + fastjson首先说一下场景:在一些富客户端 ...

  6. x86的字节对齐与不对齐的问题

    比如这么一个结构体struct foo {short s;int   n;}; struct foo bar;假设bar的地址是0x12345670如果不按4字节对齐那么bar.n的地址就是0x123 ...

  7. 全文检索~solr的使用

    全文检索这个系列在几前年写过lucene的文章,而现在看来它确实已经老了,它的儿子孙子都出来了,已经成为现在检索行列的主流,像solr,elasticsearch等,今天我们主要来看一个solr在as ...

  8. emacs使用笔记

    C-h t tutorial [移动基本操作]C-f C-b C-p C-n 前后上下 C-v C-a 行首 C-e行尾C-a 和 C-e 可以将光标移动到"一行"的头部和尾部.M ...

  9. Redis启动和关闭

    带配置文件启动 ./redis-server redis.conf 关闭 无密码模式  ./redis-cli -h xxx -p xxx shutdown 密码模式  ./redis-cli -h ...

  10. 触发Full GC的时机

    由于Full GC的耗时是Minor GC的十倍左右,所以Full GC的频率设计得比Minor GC低得多.现总结一下触发Full GC的情况. 在那些实现了CMS的比较新的虚拟机中,如果配置了-X ...