搜索
bottom↓
回复: 4

这个verilog的程序错在那里?

[复制链接]

出0入0汤圆

发表于 2009-8-6 23:19:50 | 显示全部楼层 |阅读模式
当输入的端口上数据有变化时,输出一个负脉冲到MCU,
        assign  in_int = creat_int_function(read_reg,old_read_reg);
        function creat_int_function;
                input read_reg,old_read_reg;               
                if( old_read_reg == read_reg )
                        creat_int_function = 1'b1;
                else
                        creat_int_function = 1'b0;       
        endfunction

read_reg的数据是时时在更新的, old_read_reg是保存前一次read_reg的值;
当MCU读取read_reg的值后,更新old_read_reg;
1.初始时read_reg = old_read_reg;
2.in_int = 1;
3.当端口上数据有变化时,根据以上程序,in_int=0;
4.外部MCU检测到in_int下降沿,读取数据,这时CPLD使old_read_reg = read_reg,那么in_int = 1;

但是实际上并没有这个下降沿,也就是说,无论端口数据怎么变化,in_int 总是为1;

刚学习verilog,希望明白的能指点一下下,,

谢谢了,,

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2009-8-7 02:14:27 | 显示全部楼层
assign  in_int = creat_int_function(read_reg,old_read_reg);
function creat_int_function;
input read_reg,old_read_reg;
if( old_read_reg == read_reg )
creat_int_function = 1'b1;
else
creat_int_function = 1'b0;
endfunction
---------------------------------------------
你用的是函数的方法来实现,但是函数是要有返回值的,你现在的函数没有返回值,当然
assign  in_int = creat_int_function(read_reg,old_read_reg); 这句就没有起到赋值作用了。
建议重新编写一下函数部分

出0入0汤圆

 楼主| 发表于 2009-8-7 11:41:56 | 显示全部楼层
谢谢楼上的答复.
函数有返回值
assign  in_int = creat_int_function(read_reg,old_read_reg);

function creat_int_function;  
input read_reg,old_read_reg;  
if( old_read_reg == read_reg )  
creat_int_function = 1'b1;    // 返回1
else  
creat_int_function = 1'b0;    // 返回0
endfunction  

想来想去都没错啊``怎么就不行呢

出0入0汤圆

 楼主| 发表于 2009-8-7 13:45:56 | 显示全部楼层
问题找出来了,其实还是程序错误
assign  in_int = creat_int_function(read_reg,old_read_reg);  
  
function creat_int_function;   
input [15:0] read_reg;
input [15:0] old_read_reg;// 这里应该指定位数,否则默认的只是1位,
                          // 若不指定位数,实际上传递进来的只read_reg和old_read_reg中的最低位   
if( old_read_reg == read_reg )   
creat_int_function = 1'b1;    // 返回1
else   
creat_int_function = 1'b0;    // 返回0
endfunction

出0入0汤圆

发表于 2009-8-7 19:23:23 | 显示全部楼层
原来如此
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-1 08:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表