在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4261|回复: 10

[求助] 哪位帮我看看这段Verilog代码?运行一下

[复制链接]
发表于 2013-2-23 21:24:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

我运行的时候总是出现parameter那段有问题

这个基本功不是很扎实

帮我看看问题在哪

先谢谢了

module
int_div(clock,clk_out);

//I/O口声明

input
clock;
//
输入时钟

output
clk_out;
//
输出时钟

//内部寄存器

reg
clk_p_r;
//
上升沿输出时钟

reg clk_n_r;
//
下降沿输出时钟

reg[F_DIV_WIDTH - 1:0] count_p;
//
上升沿脉冲计数器

reg[F_DIV_WIDTH - 1:0] count_n;
//
下降沿脉冲计数器

//参数--分频系数

parameter F_DIV = 12;
//
分频系数<<<<-----修改这里改分频系数

parameter F_DIV_WIDTH = 16;
//
分频计数器宽度

wire full_div_p;
//
上升沿计数满标志

wire half_div_p;
//
上升沿计数半满标志

wire full_div_n;
//
下降沿计数满标志

wire half_div_n;
//
下降沿计数半满标志

//判断计数标志位置位与否

assign full_div_p = (count_p < F_DIV - 1);

assign half_div_p = (count_p < (F_DIV>>1) - 1);

assign full_div_n = (count_n < F_DIV - 1);

assign half_div_n = (count_n < (F_DIV>>1) - 1);

//时钟输出

assign
clk_out = (F_DIV == 1) ?


clock : (F_DIV[0] ? (clk_p_r & clk_n_r) : clk_p_r);

//上升沿脉冲计数

always @(posedge clock)

begin


if(full_div_p)


begin


count_p <= count_p + 1;


if(half_div_p)


clk_p_r <= 1'b0;


else


clk_p_r <= 1'b1;


end


else


begin


count_p <= 0;


clk_p_r <= 1'b0;


end

end

//下降沿脉冲计数

always @(negedge clock)

begin


if(full_div_n)


begin


count_n <= count_n + 1;


if(half_div_n)


clk_n_r <= 1'b0;


else


clk_n_r <= 1'b1;


end


else


begin


count_n <= 0;


clk_n_r <= 1'b0;


end

end

endmodule

发表于 2013-2-23 22:16:53 | 显示全部楼层
回复 1# fj773
不晓得你说parameter问题是什么,我这边编译通过,有三个警告。有什么问题剪切下来,别人才好看
 楼主| 发表于 2013-2-24 10:38:25 | 显示全部楼层
回复 2# windycraze

不晓得你用什么编译器编译的 啊
你可以看看warning?我编译的问题图贴如下


    QQ截图20130224103920.png
发表于 2013-2-24 15:18:23 | 显示全部楼层
Put parameter declarations before those who reference them
(For your case, count_p and count_n).
 楼主| 发表于 2013-2-24 16:03:10 | 显示全部楼层
回复 4# apyamy


    这两句怎么改?能贴出来吗
谢谢了
 楼主| 发表于 2013-2-24 16:08:36 | 显示全部楼层
回复 4# apyamy


    从代码上看应该没问题啊?

前面定义了count_p与count_n宽度为F_DIV_WIDTH 的reg型

后面才定义F_DIV_WIDTH为常量16



按你的说话先定义F_DIV_WIDTH为常量16后面再定义count_p与count_n,这样子也不行啊?
发表于 2013-2-24 21:08:35 | 显示全部楼层
??????
发表于 2013-2-24 22:46:32 | 显示全部楼层
回复 6# fj773

先parameter再申明reg
发表于 2013-2-25 07:37:09 | 显示全部楼层
下一句:
assign clk_out = (F_DIV == 1) ? clock : (F_DIV[0] ? (clk_p_r & clk_n_r) : clk_p_r);
把F_DIV[0] 改为(F_DIV &1),试一下。
发表于 2013-2-25 14:59:39 | 显示全部楼层
我记得paramter 不能直接移位。 F_DIV>>1,这样应该不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 07:11 , Processed in 0.022169 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表