基于赛灵思FPGA的频率计设计

发布者:bonbono最新更新时间:2013-01-27 来源: 21ic关键字:赛灵思  FPGA  频率计 手机看文章 扫描二维码
随时随地手机看文章
   

首先是将频率分频,产生1HZ频率,程序如下:

-------------------------------------------------------------------
-- 说明: 分频模块,将标准输入频率分频为1HZ
-- 文件: fenpin.vhd
-- 作者:
-- 日期: 2012/04/09
-- 修改:
-- 软件: Altera QuartusII 9.0 
-- 芯片: Altera Cyclone FPGA (EP1C3T144C8)
-------------------------------------------------------------------


LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;   --运算符重载的一个头文件


--实体描述部分
ENTITY fenpin IS
      PORT(                  --端口声明
               CLKIN    : IN  STD_LOGIC;
               CLK1HZ : OUT STD_LOGIC
           ); 
END fenpin;


--结构体描述部分
ARCHITECTURE bhv OF fenpin IS
 
 SIGNAL Q : STD_LOGIC;
 
BEGIN
 PROCESS(CLKIN)  --IF语句放在进程中
  CONSTANT shuru_05CLK :integer := 50000;        --shuru_05CLK是标准输入频率的一半,这里使shuru_05CLK=50000,
                                                                                   --就是假设标准信号是100000HZ,要根据实际输入频率更改这个常量
        VARIABLE CNT :integer := 0 ;              
 BEGIN
  IF (CLKIN\'EVENT AND CLKIN=\'0\') THEN     --功能:当时钟下降沿到来,判断变量CNT=shuru_05CLK的值没有
   IF CNT=shuru_05CLK THEN                        --      不等于就继续累加,直到CNT=shuru_05CLK,此时就将信
    CNT := 0; Q <= NOT Q;                               --      号Q取反,并把CNT清零,也就是每shuru_05CLK(这里是
    ELSE CNT := CNT + 1;                                --      50000)次时钟变化,才让Q变一次,达到了分频效果。
   END IF;
  END IF;  
 END PROCESS;    --进程结束
 CLK1HZ <= Q ;
END bhv;                  --结束结构体

 

其次是测频控制模块,主要用来产生1S的闸门信号,如下:

-------------------------------------------------------------------
-- 说明: 测频控制模块
-- 文件: kongzhi.vhd
-- 作者:
-- 日期: 2012/04/09
-- 修改:
-- 软件: Altera QuartusII 9.0 
-- 芯片: Altera Cyclone FPGA (EP1C3T144C8)
-------------------------------------------------------------------


LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
--USE IEEE.STD_LOGIC_UNSIGNED.ALL;   --运算符重载的一个头文件


--实体描述部分
ENTITY kongzhi IS
      PORT(                  --端口声明
                              CLKK : IN  STD_LOGIC;
               RST_CNT,CNT_EN,LOAD : OUT STD_LOGIC
           ); 
END kongzhi;


--结构体描述部分
ARCHITECTURE bhv OF kongzhi IS
 
 SIGNAL Q : STD_LOGIC;
 
BEGIN
 PROCESS(CLKK)  --IF语句放在进程中
 BEGIN
  IF (CLKK\'EVENT AND CLKK=\'1\') THEN
   Q <= NOT Q;
  END IF;
  IF CLKK=\'0\' AND Q = \'0\' THEN       RST_CNT <= \'1\' ;
   ELSE RST_CNT <= \'0\';
  END IF;
 END PROCESS;    --进程结束
 CNT_EN <= Q ;
 LOAD <= NOT Q ;
END bhv;            --结束结构体

 

第三步是计数器部分,对待测信号进行频率计数:

-------------------------------------------------------------------
-- 说明: 1位十进制计数器模块
-- 文件: CNT10.vhd
-- 作者:
-- 日期: 2012/04/09
-- 修改:
-- 软件: Altera QuartusII 9.0 
-- 芯片: Altera Cyclone FPGA (EP1C3T144C8)
-------------------------------------------------------------------


LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;   --运算符重载的一个头文件


--实体描述部分
ENTITY CNT10 IS
      PORT(                   --端口声明
            CLK, CLR, EN, RESET : IN  STD_LOGIC;
         COUT : OUT STD_LOGIC;
          Q : OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 )
           ); 
END CNT10;


--结构体描述部分
ARCHITECTURE bhv OF CNT10 IS
 
 SIGNAL Q1 : STD_LOGIC_VECTOR ( 3 DOWNTO 0 );--定义四位宽的矢量型信号节点
 
BEGIN
 PROCESS(CLR,CLK)  --IF语句放在进程中
 BEGIN
  IF RESET = \'0\' THEN Q1 <= "0000";COUT <= \'0\';        --复位信号,当RESET为0时复位,正常为低电平
   ELSIF CLR = \'1\' THEN Q1 <= "0000";COUT <= \'0\';     --清零信号,当CLR为1时清零,正常为低电平
    ELSIF CLK\'EVENT AND CLK = \'1\' THEN
       IF EN=\'1\' THEN
      IF Q1<9 THEN Q1 <= Q1+1;COUT <= \'0\';    --计数器未计满9就继续计数
       ELSE Q1 <= "0000";COUT <= \'1\';                --计数器计满9就清零,产生进位信号
      END IF;
     END IF;
  END IF;
 END PROCESS;    --进程结束
 Q <= Q1;                --端口赋值
END bhv;                 --结束结构体[page]

 

   

第四步,将测得的频率锁存,即设计锁存器:

-------------------------------------------------------------------
-- 说明: 锁存器模块
-- 文件: suocun.vhd
-- 作者:
-- 日期: 2012/04/09
-- 修改:
-- 软件: Altera QuartusII 9.0 
-- 芯片: Altera Cyclone FPGA (EP1C3T144C8)
-------------------------------------------------------------------


LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;   --运算符重载的一个头文件


--实体描述部分
ENTITY suocun IS
      PORT(                  --端口声明
                     RESET, CLK1HZ : IN  STD_LOGIC;
     AIN0,AIN1,AIN2,AIN3 : IN  STD_LOGIC_VECTOR (3 DOWNTO 0);
                       Q0,Q1,Q2,Q3 : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)
           ); 
END suocun;


--结构体描述部分
ARCHITECTURE bhv OF suocun IS
BEGIN
 PROCESS(CLK1HZ)         --这里输入的1HZ是来自控制模块的LOAD,LOAD是1HZ的信号
 VARIABLE T3,T2,T1,T0 : STD_LOGIC_VECTOR (3 DOWNTO 0);--定义变量
 BEGIN
  IF RESET = \'0\' THEN   --复位信号为低电平有效,当RESET=0时,将所有值清零
   T3 := "0000" ;
   T2 := "0000" ;
   T1 := "0000" ;
   T0 := "0000" ;
   ELSIF (CLK1HZ\'EVENT AND CLK1HZ=\'1\') THEN  --根据题目要求,LOAD上升沿锁存数据
    T3:=AIN3;
    T2:=AIN2;
    T1:=AIN1;
    T0:=AIN0;
  END IF;
  Q3 <= T3;
  Q2 <= T2;
  Q1 <= T1;
  Q0 <= T0;
 END PROCESS;    --进程结束
 
END bhv;            --结束结构体

最后是译码输出在数码管显示:

-------------------------------------------------------------------
-- 说明: 译码器设计
-- 文件: decoder.vhd
-- 作者:
-- 日期: 2012/04/09
-- 修改:
-- 软件: Altera QuartusII 9.0 
-- 芯片: Altera Cyclone FPGA (EP1C3T144C8)
-------------------------------------------------------------------

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY decoder IS
      PORT(
           ain  : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
           yout : OUT STD_LOGIC_VECTOR (6 DOWNTO 0)
           );
END decoder;


ARCHITECTURE yimaqi OF decoder IS
BEGIN
    PROCESS ( ain )
    BEGIN
        CASE ain IS
            WHEN "0000"  =>  yout<= "0111111";   --0
            WHEN "0001"  =>  yout<= "0000110";   --1
            WHEN "0010"  =>  yout<= "1011011";   --2
            WHEN "0011"  =>  yout<= "1001111";   --3
            WHEN "0100"  =>  yout<= "1100110";   --4
            WHEN "0101"  =>  yout<= "1101101";   --5
            WHEN "0110"  =>  yout<= "1111101";   --6
            WHEN "0111"  =>  yout<= "0000111";   --7
            WHEN "1000"  =>  yout<= "1111111";   --8
            WHEN "1001"  =>  yout<= "1101111";   --9
            WHEN "1010"  =>  yout<= "1110111";   --A
            WHEN "1011"  =>  yout<= "1111100";   --B
            WHEN "1100"  =>  yout<= "0111001";   --C
            WHEN "1101"  =>  yout<= "1011110";   --D
            WHEN "1110"  =>  yout<= "1111001";   --E
            WHEN "1111"  =>  yout<= "1110001";   --F
            WHEN OTHERS  =>  NULL;
        END CASE;
    END PROCESS;
END yimaqi;

关键字:赛灵思  FPGA  频率计 引用地址:基于赛灵思FPGA的频率计设计

上一篇:基于ARM+FPGA控制的LTC2207采集应用
下一篇:Xilinx 20nm产品细节揭秘 抢占20nm FPGA制高点

推荐阅读最新更新时间:2024-05-02 22:32

Altera通过收购电源技术创新者 Enpirion提供突破性 FPGA 电源解决方案
2013年5月15号,北京 ——Altera公司(NASDAQ: ALTR) 今天宣布,该公司已经签署了收购 Enpirion, Inc. 的最终合并协议。Enpirion 是业界领先的高效集成电能转换产品(即电源单芯片系统 (PowerSoC))供应商。 Altera 的 FPGA(现场可编程门阵列)与 Enpirion 的电源单芯片系统相结合,将有助于客户增强性能、降低系统功耗、提高可靠性、减小产品体积以及加快产品上市。 Altera公司总裁、首席执行官兼董事会主席 John Daane 表示:“电源管理日益成为通信、计算和企业以及工业应用领域来突出其产品上差異化的战略性竞争优势。通过为 Altera 新增一个电源部门,我们
[嵌入式]
技术创新需要跳出“逻辑”的限制
工程师的天性就是讲究逻辑性。在电子工程科学中,我们与逻辑元素打交道 – 核心层面的0与1,硬件领域的逻辑设备,以及软件领域中基于逻辑的指令。 但是这种逻辑基础不仅是创建电子架构的基石,也延伸至我们所采用的电子工程学科的概念和方法中。当然作为一门学科,工程学确实是这样被教授的:运用合乎逻辑的解决方案去解决逻辑工程问题。 表面上,这是可以理解的,看起来也无不妥之处。如果在设计过程中没有架构和逻辑,风险甚至是混乱将很快破坏最终的结果,出现设计错误倍增、交期延误、着急上火、被兴师问罪等种种问题。 Altium Limited技术编辑Rob Evans 所以,我们谨慎小心地管理设计过程。我们在划分好的逻辑
[嵌入式]
专注于IP内核开发,印度成为Xilinx全球研发中心
Xilinx公司在海德拉巴的中心将成为其全球研发中心。直到目前为止,印度中心一直专注于开发IP内核。这个中心已经开发了大约60个内核,其中的许多内核都基于65nm工艺技术。 这个中心将进行软件、系统和应用开发,并配备专注于各个领域的团队。系统和应用中心将专注于针对为消费电子、电信和视频市场开发产品的Xilinx客户的特定领域平台。软件中心将致力于EDA工具和算法开发、验证和FPGA基准。 Xilinx公司最初通过与软件和系统开发公司CMC公司(现在的TCS)合作将工程设计业务外包到印度。CMC是一家大约一年前通过重组而成立的Xilinx India Technology Services公司的独立子公司。该公司目前雇佣的工程师
[焦点新闻]
基于FPGA和DDS技术的软件无线电可控数字调制器的
0 引言   软件无线电是在无线通信领域提出的一种新的通信系统体系结构,其核心思想是以开放性、标准化、模块化的硬件为通用平台,通过在平台加载不同软件来实现对工作频段、调制解调、信道多址方式等无线功能的灵活配置。而调制解调技术是软件无线电的主要组成部分。直接数字合成技术(DDS)具有较高的频率分辨率,可实现快速的频率切换,能够保持相位的连续性,很容易实现幅度、频率和相位的数控调制。目前,软件无线电调制技术多采用具有调制功能的专用芯片或可编程器件和专用芯片相结合的方法实现,灵活性并不是很强。   基于此,本系统在分析数字调制技术和DDS原理的基础上,详述了一种基于FPGA的DSP技术和DDS技术的适合于软件无线电使用的可控数字调制
[嵌入式]
基于<font color='red'>FPGA</font>和DDS技术的软件无线电可控数字调制器的
ARM发表RealView 3.1版开发套件为嵌入式系统设计带来低风险的软件开发方案
  新版软件支持全系列ARM处理器为开发业者带来大幅改进的效能与易用性   ARM于日前在美国加州举办的嵌入式系统研讨会中,发表RealView  Development Suite 3.1版(RVDS 3.1)开发套件,针对全系列ARM 处理器持续提供顶级整合式工具,协助客户开发各种嵌入式系统软件。   RVDS 3.1开发套件大幅提升效能,不仅针对ARM处理器的支持进行调校设计,更针对全系列Cortex 处理器进行完善的最佳化,其中包括日前甫发表的Cortex-M1 处理器,该款处理器同时也是ARM首款针对FPGA设计的处理器产品。   RVDS 3.1开发套件为首款支持Cortex-M1处理器的工具套件,包含Corte
[嵌入式]
网络分析仪设定电延迟,如何通过频率计算等效相位延迟?
根据电延迟,可通过以下公式计算等效相位延迟: θ°= Ftest * Delay * 360 其中: θ° = 等效相位 Ftest = 频率(Hz) Delay = 延迟(秒) 360 = 弧度到度数的转换系数 例如: 起始频率:1.0 GHz;终止频率:2.0 GHz;点数:201 通过是德电子校准件(ECal)进行完整的双端口校准 单通道,双迹线,两个窗口,每个窗口显示一条迹线 被测件――Keysight N4419AK20,3.5mm 阳头至 3.5mm 阴头电缆组件。 上边的窗口,‘Tr1’,S21,Format Phase(格式相位),Delay = 0S(无电延迟) 下边的窗口,‘Tr2’,S21,
[测试测量]
网络分析仪设定电延迟,如何通过<font color='red'>频率计</font>算等效相位延迟?
基于单片机与FPGA可调延时模块的设计
  系统结构框图如图1。其硬件结构比较简单,主要由单片机P89C51RD、RS-232/TTL接口电路MAX232和可编程逻辑器件FPGA三部分组成。单片机P89C51RD2是上位PC机和FPGA的连接纽带,它通过并口发送数据给FPGA,另一边通过RS-232/TTL接口芯片与PC机进行串行通讯;PC机主要功能是实现延时调整的可视化操作;FPGA是延时调整处理的硬件实现,单片机将PC送过来的延时调整参数输入FPGA,FPGA在单片机的控制下对信号进行延迟处理,最后送入相应传输通道。某些系统使用现场存在较强的电磁干扰,模块的设计考虑信号隔离问题,故对串行接口进行了电气隔离,强化了PC机和模块通讯的安全系数。   延时模块正常上
[单片机]
基于单片机与<font color='red'>FPGA</font>可调延时模块的设计
精确综合:下一代FPGA综合平台
概述 电子系统设计正在发生着重要的转变。可编程逻辑器件使设计者可以开发具有千万门以上、频率超过300MHz以及嵌入式处理器的电路,能够集成完整的系统。这一技术进步通过提供ASIC领域之外的全面的方法,正在引起设计过程的转变。 在迅速变化的可编程逻辑领域,EDA提供商面临的挑战是,如何提供与硅容量和复杂性同步的设计工具和方法。例如,ASIC领域用了15年来合并硅处理和基于可靠的功能性EDA软件的设计方法。这种ASIC技术曾经是工业领域的驱动力和发展方向。可以说ASIC处理造就了电子工业廉价的方案,导致了电子工业的进步和创新。但目前这个过程已经趋于成熟,它更适合于极高端的设计,慢慢地脱离了大众化的市场。 过去的实践已经表明,当电子设计
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved