zoukankan      html  css  js  c++  java
  • quartus FIR仿真笔记

    第一章:

      最近百度了一些fir滤波器的资料,都没有自己想要的。容我吐槽一大段文字>。。

      在旧版的quartus中,比如13.0,有两个fir滤波器的选项,如下所示:

    网上很多都是讲不带II的那个,而在新版的quartus已经找不到这个IP了,如下所示:

     

    对于第一版的FIT滤波器,在旧的版本中,经常生成不了fir这个滤波器(quartus 的软件问题让人抓狂。。)

    选择生成仿真模型

    (卡在这里不动了。。我会告诉你不勾选生成仿真模型就能生成成功了嘛。。呵)

    哎。

    第二章:

    解决方法:

    1.我不看仿真了。。(我不)

    2.于是我按照普通的方法,生成FIR II,然后按照一般的方法联合仿真。然后就会报错。。如下所示:

    3.正确的方法只要使用quartus自带的modelsim,仿真就可以(其实加入相应的库也可以仿真的。。。不想研究了)。如下所示:

     

    第三章:

    仿真matlab中的输入数据:(有兴趣的去研究,有两段话,怎么加入数据,以及怎么输出数据,matlab是不是可以导入txt分析呢?。)

    `timescale 1 ps/ 1 ps
    module FirIPDa_vlg_tst();
    // constants                                           
    // general purpose registers
    // test vector input registers
    reg [11:0] Xin;
    reg clk;
    
    reg reset_n;
    // wires                                               
    wire [24:0]  Yout;
    //wire clk_data;
    // assign statements (if any)                          
    FirIPDa i1 (
    // port map - connection between master ports and signals/registers   
    	.Xin(Xin),
    	.Yout(Yout),
    	.clk(clk),
    	//.clk_data(clk_data),
    	.reset_n(reset_n)
    );
    
    parameter clk_period=626; //设置时钟信号周期(频率):1.6MHz
    //parameter clk_period_data=clk_period*13;
    parameter clk_half_period=clk_period/2;
    //parameter clk_half_period_data=clk_half_period*13;
    parameter data_num=2000;  //仿真数据长度
    parameter time_sim=data_num*clk_period; //仿真时间
    
    initial
    begin
    	//设置时钟信号初值
    	clk=1;
    	//clk_data=1;
    	//设置复位信号
    	reset_n=0;
    	#10000 reset_n=1;
    	//设置仿真时间
    	#time_sim $finish;
    	//设置输入信号初值
    	Xin=12'd10;
    end
    
    //产生时钟信号
    always                                                 
    	#clk_half_period clk=~clk;
    //always
    //	#clk_half_period_data clk_data=~clk_data;
    
    //从外部TX文件(SinIn.txt)读入数据作为测试激励
    integer Pattern;
    reg [11:0] stimulus[1:data_num];
    initial
    begin
       //文件必须放置在"工程目录simulationmodelsim"路径下
    	//$readmemb("E4_9_Bin_noise.txt",stimulus);
    	$readmemb("E4_9_Bin_s.txt",stimulus);
    	Pattern=0;
    	repeat(data_num)
    		begin
    			Pattern=Pattern+1;
    			Xin=stimulus[Pattern];
    			//#clk_period_data;//数据周期为时钟周期的8倍
    			#clk_period;//数据周期为时钟周期的8倍
    		end
    end
    
    
    //将仿真数据dout写入外部TXT文件中(out.txt)
    integer file_out;
    initial 
    begin
       //文件放置在"工程目录simulationmodelsim"路径下                                                  
    	//file_out = $fopen("E4_9_Noiseout.txt");
    	file_out = $fopen("E4_9_Sout.txt");
    	if(!file_out)
    		begin
    			$display("could not open file!");
    			$finish;
    		end
    end
    wire rst_write;
    wire signed [24:0] dout_s;
    assign dout_s = Yout;                   //将dout转换成有符号数据
    assign rst_write = clk& (reset_n);//产生写入时钟信号,复位状态时不写入数据
    always @(posedge rst_write )
    	$fdisplay(file_out,"%d",dout_s);
    	
    endmodule
    

      

     欢迎大家一起交流,Q群:912014800。

     

  • 相关阅读:
    MYSQL 5.7修改密码,登录问题
    linux 系统 cp: omitting directory 问题解决
    闭包函数是什么
    ecshop 前台个人中心修改侧边栏 和 侧边栏显示不全 或 导航现实不全
    ecshop 前台分页
    php 5.3新增的闭包语法介绍function() use() {}
    剖析 Linux hypervisor
    长久的深情能否维系
    私有云的迁移:从VMware到OpenStack
    Openstack 架构简述
  • 原文地址:https://www.cnblogs.com/cofin/p/9515098.html
Copyright © 2011-2022 走看看