打印

谁能帮我解释这个cpld 程序问题?

[复制链接]
1611|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
teuton|  楼主 | 2007-7-26 13:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是ALTERA EPM570;为了测试做的电路板ok否,我写了一小段程序验证我的电路板。
module buttom1 (clk,epm240_clk,rst570,test_out,port_test);
input clk;                       //main system clock//
input rst570;                    //reset epm570 reset//
output epm240_clk;              //epm240 system clock//
output test_out;                //epm570 system test//
output [3:0]port_test;    //主要问题所在


//assign epm240_clk =clk;
assign  port_test = 4'b1010;//主要问题所在
reg   test_out;
reg   epm240_clk;

always @( rst570 or  clk)
begin
    if (rst570==0)
    begin
    test_out = 1;
    epm240_clk=0;
    end
    else
    begin
    test_out = clk;
    epm240_clk=clk;
    end
end


endmodule

在我标识//主要问题所在 的那两行程序没写以前,我的test_out = clk;这条语句在下载后是不执行的,我换了引脚,还是没有输出,我检查电源地,也是没有问题的,当我把//主要问题所在 两行语句写下,烧入后,test_out = clk这条语句竟然执行了。是什么原因呢。难道是test_out = clk;被综合掉了,为什么呢?

相关帖子

沙发
teuton|  楼主 | 2007-7-26 13:34 | 只看该作者

自己定一下

使用特权

评论回复
板凳
sibaidong| | 2007-7-27 19:57 | 只看该作者

要是VHDL还可以帮你一下!

Verilog 正在学习中,帮不了哦,顶一下!

使用特权

评论回复
地板
aureoleday| | 2007-8-2 23:18 | 只看该作者

楼主,你的代码实在太NB

强烈建议你看看verilog语法的书,找个模板比着写,要不bug多到死

先说几个最明显的问题
1. always块内部一般都用非阻塞赋值,也就是“<=”,而不是“=”;
2. always后的敏感列表一般在时钟和复位信号上升沿或下降沿采样,而不是都采样,DDR在CPLD里不怎么好用,哈
如always@(posedge clk or negedge _rst)...
3. 第一个赋值语句一般应在最后一个变量定义之后
4. 你的port_test 应该先定义为wire 变量后才能进行赋值


使用特权

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

本版积分规则

21

主题

70

帖子

0

粉丝