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. [USACO12FEB]牛的IDCow IDs 一题多解(求二进制中有k个1 ,第n大的数)

    题目: FJ给他的奶牛用二进制进行编号,每个编号恰好包含K 个"1" (1 <= K <= 10),且必须是1开头.FJ按升序编号,第一个编号是由K个"1&q ...

  2. Dear friends:

      To realize the value of ONE YEAR想知道一整年的价值ask the student who has failed a class就去问被当过的学生To realize ...

  3. 使用Maven运行Java main的3种方式使用Maven运行Java main的3种方式

    maven使用exec插件运行java main方法,以下是3种不同的操作方式. 一.从命令行运行 1.运行前先编译代码,exec:java不会自动编译代码,你需要手动执行mvn compile来完成 ...

  4. sed 练习

    [root@server3 mnt]# cat -n passwd 1  root:x:0:0:root:/root:/bin/bash 2  bin:x:1:1:bin:/bin:/sbin/nol ...

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

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

  6. spark on yarn模式里需要有时手工释放linux内存

    为什么要提出这个问题? spark跑YARN模式或Client模式提交任务不成功(application state: ACCEPTED) 然后执行 [spark@master spark--bin- ...

  7. Unity3D游戏轻量级xlua热修复框架

    Unity3D游戏轻量级xlua热修复框架   一 这是什么东西 前阵子刚刚集成xlua到项目,目的只有一个:对线上游戏C#逻辑有Bug的地方执行修复,通过考察xlua和tolua,最终选择了xlua ...

  8. SpringBoot | 第二十七章:监控管理之Actuator使用

    前言 随着我们服务越来越多,部署的环境也越来越繁多时,由于各服务都部署在不同的机器上,每当出现问题或者异常时,想快速进行问题的定位就变的麻烦了.所以,本章节开始,开始讲解SpringBoot的监控相关 ...

  9. 自己用jquery+css+div写的一个弹窗

    弹窗支持两种模式,一种是普通信息提示框,调用方法:popup.msgPopup(msg); 另一种是可以加载页面的弹窗,调用方法:popup.pagePopup(url); 效果图: css代码 ;; ...

  10. artDialog组件应用学习(四)

    一.在对话框自定义操作按钮 预览: html调用代码: var btnArray = [ { value: '同意', callback: function () { this.content('你同 ...