加入收藏 设为首页 帮助中心
 
论坛首页
用户登录 | 用户注册 | 最新悬赏 | 最新贴子 | 会员中心 | 贴子搜索 | 网站地图 | 帮助中心 | 联系我们
站内搜索:
现在位置 > 维库电子开发网论坛 > EDA > 一个cpld的案例分析
帖子主题: 一个cpld的案例分析
你还没有登录,无法发表回复,请首先 登录.. [注 册]
积分:918 moyifeng7273
发表于:2008-5-8 10:57:00 楼主
级别:一钻
积分:918分
注册:2006年08月13日
一个cpld的案例分析

本想将CLK信号分频1/256,然后去让一个LED等闪烁。可是示波器测出来的记过是只分频到了1/2。器件是XC9572XL。
今天把程序改了一下,让问题暴露得更明显些,并且拍下了波形,大家都来讨论一下,看看究竟是什么问题.时钟频率是50MHZ的.
好象内部信号的振铃相当严重.
相当困惑,哪位朋友遇到过类似问题,指点一下!!
module pcicfg72(pclk,rst,ad,
                     ledr    //to led
                     );
input pclk;
input rst;
output reg ledr;
output reg[31:0] ad;
wire clk;
wire n_rst;

IBUF IBUF_inst( .O(n_rst), .I(rst) );
BUFG BUFG_inst( .O(clk), .I(pclk) ); //Clock buffer input

always @(posedge clk)    
    begin
        ad <= ad + 1;
    end                   

endmodule            



 
积分:244 aixiaolang8484
发表于:2008-5-8 10:57:00 1 楼
级别:三星
积分:244分
注册:2006年08月13日
附件是各个信号的实际波形

CLK : 50MHZ
ad0 : 25M
ad1 : 12.5M
ad2 : 不稳定,大概是18.6M
ad3 : 25M
ad4 : 25M
ad5 : 25M
ad6 : 25M
ad7 : 25M




http://bbs.21ic.com/upfiles/img/20083/2008317104841237.rar

 
积分:660 xuezhile5136
发表于:2008-5-8 10:57:00 2 楼
级别:五星
积分:660分
注册:2006年08月13日
这个波形没什么问题吧?

 

 
积分:375 tianying17939
发表于:2008-5-8 10:57:00 3 楼
级别:四星
积分:375分
注册:2006年08月13日
接标准方波把探头调好再测

 

 
积分:887 undeadzhen4732
发表于:2008-5-8 10:57:00 4 楼
级别:一钻
积分:887分
注册:2006年08月13日
这是正常方波,如果还觉得不满意,则要调整输出和输入阻抗的匹配.

 

 
积分:443 老狼5397
发表于:2008-5-8 10:57:00 5 楼
级别:四星
积分:443分
注册:2006年08月13日
示波器探头的接地夹有没有良好接地?

 

 
积分:604 empirewang9149
发表于:2008-5-8 10:57:00 6 楼
级别:五星
积分:604分
注册:2006年08月13日
感谢大家的回答

感谢大家的回答,这个波形好象是没什么问题,除了过冲和振铃有点大以外.
可能大家没有看哪个RAR附件,里面还有还几张照片,是一个8位counter的8个位.
按照逻辑来分析,这个counter的第0位的频率应该是CLK频率的1/2,第1位频率是clk频率的1/4,第2位是1/8,......,第7为是1/256.modelsim仿真的结果也是这样的.
但是,程序下载下去,运行的结果就不是这样了,第0位,第1位是正常的,第2,3位就呈现出不稳定的非周期信号,第4,5,6,7位信号稳定,频率都是CLK的1/2.
不知道究竟是什么问题? 器件是好的,别人给我的一个JED文件可以正常工作.
我换了一个12MHZ的时钟也是如此.
?????????   谢谢

 
积分:459 BB12168
发表于:2008-5-8 10:57:00 7 楼
级别:四星
积分:459分
注册:2006年08月13日
关于这个程序

此程序上面有定义rest,但在应用中却没有rest,对其复位,
module inv1(ad,clk,n_rst );
input a,b;
output reg[31:0] c;
always@(posedge clk  or  negedge n_rst)
begin
  if(n_rst==0)
  ad=0;
else
  ad=ad+1;
end
endmodule


 
积分:111 tanchao9030
发表于:2008-5-8 10:57:00 8 楼
级别:二星
积分:111分
注册:2006年08月13日
kankan

楼上的说的不错~~~reset信号需要加上,signal没有初始是很危险的
always@(posedge clk  or  negedge n_rst)

 
积分:343 shaoxu1235397
发表于:2008-5-8 10:57:00 9 楼
级别:四星
积分:343分
注册:2006年08月13日
:加了reset也没有用啊

加了reset情况依然如此.
always @(posedge pclk or negedge rst)
begin
if(rst==0)
  ad <= 32'h00000000;
else
  ad <= ad + 1;
end

always @(posedge pclk or negedge rst)
begin
  if(rst==0)
    ledr <= 0;
  else if(ad[23:0]==24'h000000)
    ledr <= ~ledr;
  else;
end

不过对ad[23:0]的整体判断是对的,第二个进程加入之后ledr的周期在1s左右,和仿真结果是一直的.但是如果是用这样一个语句 ledr<= ad[23]就不对了,ledr的信号频率成了25MHZ.想不通!!!!


 
积分:686 zenf1907
发表于:2008-5-8 10:57:00 10 楼
级别:五星
积分:686分
注册:2006年08月13日
:问题解决啦!!

问题解决啦!!
经过我的努力,终于找到问题的根源了,是软件的问题.
我用的是ISE7.1(破解版),有朋友说,这个版本的软件相当不稳定,BUG很多.
我换了很就以前使用的ISE6.2就好了,什么问题也没有 .
感谢那些热心回贴的朋友,也希望用Xilinx器件的朋友小心,不要用7.1版本的ISE.

 
积分:125 ansir0004187
发表于:2008-5-8 10:57:00 11 楼
级别:二星
积分:125分
注册:2006年08月13日
:现在ISE 10.1都出来了.

版本的更新真是快.

 
快速回复:
用户名: 密码:  验证码,看不清楚?请点击刷新验证码 注册新帐号?
上传图片格式(jpg/gif/png)和文件格式(rar/pdf)
 
 
网站简介广告服务网站地图帮助信息联系方式问题报告
Copyright 2007 - 2008 bbs.weeqoo.com
Powered By weeqoo Version 8.0.0