打印
[CPLD]

请教各位帮我看看这个CPLD程序?谢谢了

[复制链接]
935|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这程序是一个等精度频率计,能够正常仿真,但是下爱到CPLD中后,CPLD中没有sta信号输出,单片机给定的GATE,CLR都正常,CPLD型号为EPM240T100C5,程序如下:
LIBRARY IEEE;  
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY clk_ent IS  
PORT(bclk:IN STD_LOGIC;         --标准频率(40HZ)时钟信号         
xclk:IN STD_LOGIC;         --待测频率信号      
gate:IN STD_LOGIC;         --预置门控制信号        
sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0);--数据读出控制      
clr:IN STD_LOGIC;          --清零和初始化信号      
sta:OUT STD_LOGIC;        --计数结束标志信号   
databus:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));--计数器输出
END clk_ent;  
ARCHITECTURE counter OF clk_ent IS  
SIGNAL bz_count,dc_count:STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL bz_ena,dc_ena:STD_LOGIC;--允许计数使能信号
BEGIN  
PROCESS(sel)        --读计数值进程
BEGIN   
CASE sel(1 DOWNTO 0)IS   
WHEN"00"=>databus<=bz_count(15 DOWNTO 0);--标准频率信号计数器值(低16位)   
WHEN"01"=>databus<=bz_count(31 DOWNTO 16); --标准频率信号计数器值(高16位)   
WHEN"10"=>databus<=dc_count(15 DOWNTO 0); --被测频率信号计数器值(低16位)   
WHEN"11"=>databus<=dc_count(31 DOWNTO 16); --被测频率信号计数器值(高16位)   
WHEN OTHERS=>NULL;   
END CASE;
END PROCESS;  
bzcounter:PROCESS(bclk,clr,gate)  --标准频率计数器进程           
BEGIN            
IF clr = '1' THEN bz_count<=(OTHERS=>'0');           
ELSIF bclk'EVENT AND bclk='1' THEN           
IF bz_ena='1' THEN bz_count<=bz_count+1;         
END IF;           
END IF;           
END PROCESS;  
dccounter:PROCESS(xclk,clr,gate)  --被测频率计数器进程           
BEGIN              
IF clr = '1' THEN dc_count<=(OTHERS=>'0');            
ELSIF xclk'EVENT AND xclk='1' THEN            
IF dc_ena='1' THEN dc_count<=dc_count+1;            
END IF;            
END IF;            
END PROCESS;  
DQ:PROCESS(xclk,clr)          --预置门控制进程   
BEGIN      
IF clr = '1' THEN dc_ena<='0';      
ELSIF xclk'EVENT AND XCLK='1' THEN
dc_ena<=gate;      
END IF;   
END PROCESS;   
bz_ena<=dc_ena;   
sta<=dc_ena;
END ARCHITECTURE;引脚配置如图所示:
先谢过各位了,谢谢!

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

86

帖子

3

粉丝