FPGA 移交代码学习——Map错误 ODDR2 使用问题

摘要:
在这段时间里,我一直忙于补丁的制作和移动,所以我没有太多时间来妥善处理。

这段时间一直忙贴片生产相关事情,又是搬家,都没有什么时间好好整整。

前人移交过来的记录仪代码,发现一个BUG ,

1 wire [8:0] fchk_shift_r1 = fenergy_chk<<1;
2 wire [9:0] fchk_shift_r2 = fenergy_chk<<2;
3 wire [10:0]fchk_shift_r3 = fenergy_chk<<3;
4 wire [11:0]fchk_shift_r4 = fenergy_chk<<4;
5 
6 wire [8:0] fchk_shift_l1 = fenergy_chk>>1;
7 wire [9:0] fchk_shift_l2 = fenergy_chk>>2;
8 wire [10:0]fchk_shift_l3 = fenergy_chk>>3;
9 wire [11:0]fchk_shift_l4 = fenergy_chk>>4;

上面的命名和操作反了,正是如此导致我们该模块一直工作不正常

然而仅仅将>>改成了<< ,综合能过,MAP出现如下错误:

ERROR:Place:1205 - This design contains a global buffer instance,
<UUT_DCM/clkout1_buf>, driving the net, <clk12M_OBUF>, that is driving the
following (first 30) non-clock load pins off chip.
< PIN: clk12M.O; >
This design practice, in Spartan-6, can lead to an unroutable situation due
to limitations in the global routing. If the design does route there may be
excessive delay or skew on this net. It is recommended to use a Clock
Forwarding technique to create a reliable and repeatable low skew solution:
instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
.C1. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue. Although the net
may still not route, you will be able to analyze the failure in FPGA_Editor.
< PIN "UUT_DCM/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >

参考:

Xilinx spartan6 ODDR2的用法! - chen.terry - 中国电子顶级开发网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 - Powered by X-Space
http://www.eetop.cn/blog/html/04/869304-26543.html

FPGA产生时钟后输出时钟是出现的went_D大调的感觉_百度空间
http://hi.baidu.com/lu_shan_2012/item/13f3b21749fb97422a3e2200

应用ISE自带的原语,添加ODDR2:

1     //ODDR2: Output Double Data Rate Output Register with Set, Reset
2     //and Clock Enable.
3     //Spartan-6
4     //Xilinx HDL Libraries Guide, version 12.3
5 ODDR2  #(
6     .DDR_ALIGNMENT("NONE"), //Sets output alignment to "NONE", "C0" or "C1"
7     .INIT(1'b0), // Sets initial state of the Q output to 1'b0 or 1'b1
8     .SRTYPE("SYNC") //Specifies "SYNC" or "ASYNC" set/reset
9 ) 
10 U_ODDR2_clk12m (
11     .Q(clk12m), //1-bit DDR output data
12     .C0(oddr2_12m), //1-bit clock input
13     .C1(~oddr2_12m), //1-bit clock input
14     .CE(1'b1), // 1-bit clock enable input
15     .D0(1'b1), // 1-bit data input (associated with C0)
16     .D1(1'b0), // 1-bit data input (associated with C1)
17     .R(1'b0), // 1-bit reset input
18     .S(1'b0) // 1-bit set input
19 );
20     //End of ODDR2_inst instantiation
ODDR2

再编译,又出现如下错误:

ERROR:Pack:2531 - The dual data rate register "U_ODDR2_clk12m" failed to join
the "OLOGIC2" component as required. The output signal for register symbol
U_ODDR2_clk12m requires general routing to fabric, but the register can only
be routed to ILOGIC, IODELAY, and IOB.

参考:

Pack:2531 - The dual data rate register "clock_clk... - Xilinx User Community Forums
http://forums.xilinx.com/t5/Spartan-Family-FPGAs/Pack-2531-The-dual-data-rate-register-quot-clock-clk-5p3M-quot/td-p/344879

出现此问题是由于 又将ODDR2的输出结果用在了内部逻辑上

经过查实,其实该输出管脚已经不需要用了,将其注释掉之后再编译:

又出现如下错误:

ERROR:ChipScope: One or more invalid signal connections detected.
ERROR:ChipScope: Double-click the AGC_test.cdc icon in the sources window to edit and fix the CDC project.

打开AGC_test.cdc文件

FPGA 移交代码学习——Map错误 ODDR2 使用问题第1张

原本可用的文件,在经过更改>><<之后确不行了,

虽然移除该cdc文件,编译通过~ 但是 所有需要的IO口都没啦!!!

真的是乱啊! 纠结!待继续!

另外求教大神,为什么程序这么不稳定的原因,完全是牵一发而动全身~

有什么好的方法对该代码进行改造入手不~

万分感谢~

免责声明:文章转载自《FPGA 移交代码学习——Map错误 ODDR2 使用问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WePY 小程序授权点击取消授权失败的方案分析nginx日志常用的命令总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

风扇转速通过FPGA采样

1、风扇最大转速16000RPM,那么每一转需要时间60S/16000=0.00375S=375*10^4ns=T=T1+T2+T3+T4; 2、采样0.6S内的风扇detect信号的上升沿个数:0.6s/(375*10^4ns)=0.6*10^9ns/(375*10^4ns)=160 由于转数取最大值,所以T是最小的,那么160是最大计数个数,实际风扇规...

黑金社区 FPGA 那些事儿--Verilog 建模设计 学习 试验九 VGA显示 试验

最近这段时间忙着搬家,然后准备生产相关事情,各种杂事~ 然后光棍节来,给自己和老爸老妈买点东西。。。 效率好低。。要检讨啊~ 不能找借口! 黑金的试验九 --VGA的用法 VGA 液晶显示 主要由5个信号控制 HSYNC : 列同步信号 VSYNC : 行同步信号 RED : 红分量 GREEN : 绿分量 BLUE : 蓝分量 VGA 的扫描是固定的。一...

FPGA Verilog HDL 系列实例--------步进电机驱动控制

【连载】 FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心。那么,下面我们就了解下什么是步进电机,它是怎么控制的。 一、步进电机相关知识简介 1、步进电机概述 步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上...

【转】说说Timing这回事

【转】说说Timing这回事 Intro 问:一个FPGA设计项目需要用哪些评判标准来检验? 功能正确; 时序收敛; 资源消耗少。 时序收敛,即Timing Closure,意思是使设计的各项时序指标能满足设计前所制定要求。因此,整个过程分为两部分: 制定时序要求 满足时序要求 Timing Constraints Classes 制定时...

GPU 、APU、CUDA、TPU、FPGA介绍

购买显卡主要关注:显存、带宽和浮点运算数量 GPU :图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。 用途是将计算机系统所需要的显示信息进行转换驱动,并向显示器提供行扫描信号,控制显...

高速AD中的LVDS和FPGA

通常情况下,模拟输入信号通过高速ADC的量化输出的数字信号需要交给FPGA进行处理。如果高速ADC采用LVDS输出,那么经量化处理过的数字信号将会有非常多的LVDS数据差分对。而LVDS数据接收端,接收到的LVDS差分数据对相互之间可能会存在非常小的一个时间差异,该时间差异往往是皮秒级别的,而随着高速ADC采样率的提升,目前大多数的高速ADC采样速率已...