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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5040|回复: 6

[讨论] FPGA的RTL综合经验 讨论

[复制链接]
发表于 2011-2-27 22:37:10 | 显示全部楼层 |阅读模式

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

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

x
先上一段代码:module(signal,clk,reset,out)
input signal;
input clk;
input reset;
output    out;

reg [3:0]  shift_reg;
always@(posedge clk or negedge reset)
if(!reset)
shift_reg <= 4'b0;
else
begin
   shift_reg[0] <= signal;
   shift_reg[1] <= shift_reg[0];
   shift_reg[2] <= shift_reg[1];
   shift_reg[3] <= shift_reg[2];
end
assign  out= (shift_reg) ? 1'b1 : 1'b0;

endmodule

综合后signal 会连接到shift_reg[0]的sload端而不是shift_reg[0]的D端口,所以在时钟沿到来时,signal信号已经打到shift_reg[0]中,而不是下一个时钟周期才打到寄存器中。如下图所示:
图1.JPG
发表于 2011-2-28 08:41:42 | 显示全部楼层
没觉得有错误,波形图out1是什么信号?
发表于 2011-2-28 11:18:25 | 显示全部楼层
这句是什么用意哦
assign  out= (shift_reg) ? 1'b1 : 1'b0;
发表于 2011-2-28 11:30:27 | 显示全部楼层
sload和D不是相当的吗?
发表于 2011-2-28 14:50:50 | 显示全部楼层
从代码上看不出时钟沿到时,信号已经打入reg
发表于 2011-2-28 16:55:10 | 显示全部楼层
assign  out= (shift_reg) ? 1'b1 : 1'b0;
如果这句话的意思是指补码格式的shift_reg大于零就输出1,那么程序是没问题的。
PS:DFF有D端,CLK端,Q端,RST端,ENA端。你这里的sload端是从哪里来的,RTL视图里怎么会钻出sload端来?
发表于 2011-2-28 22:26:41 | 显示全部楼层
signal连接到sload没有错,我没猜错的话sload应该是synchronize load。它可以让flop的q端置为1.这和你写的Verilog并没有冲突。不过仔细看看,signal应该还要连接reset吧,要不然当signal为0时怎么reset shift_reg[0]=0呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-5 17:19 , Processed in 0.023689 second(s), 9 queries , Gzip On, Redis On.

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