首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

求助:CPLD宏单元的占用?

求助:CPLD宏单元的占用?

我用XC9572想实现一个64位移位寄存器的功能,用verilog编写的程序,综合仿真的时候在FIT这个步骤居然说实现这个需要92个宏单元,想请高手指点一下:寄存器变量是不是每位都需要占用一个宏单元?为什么会出现这种情况呀,怎么解决呀 module shixu(data,clk); output [64:1] data; input clk; reg fr=0; reg [20:1] j=0; reg [64:1] data=-1; reg [7:1] counter=0; always@(posedge clk) begin if(j==1000000) begin j<=0;fr<=~fr; end else j<=j+1; end \\2M的晶振分频到1HZ always@(posedge fr) if(counter==1) begin data[counter]<=0; counter=counter+1; data[64]<=1; end else if(counter==64) begin data[counter]<=0; data[counter-1]<=1; counter=1; end else begin data[counter]<=0; data[counter-1]<=1; counter=counter+1; end\\实现移位寄存器功能 endmodule
当然不是, 你也知道逻辑单元包括同步单元部分如触发器,组合单元部分和布线资源部分,如果你用完了某个逻辑单元块的布线资源,那么这个单元的同步资源部分也就不能用了
我是天堂的使者,向我倾诉吧
对,因为每个宏单元只有一个触发器,故每个寄存器在fit的时候都要映射到一个宏单元中,看你用了20个寄存器来分频,用了8个来计数,用了64个来做移位寄存,所用肯定会用到92个,不过你组合逻辑比较简单,如果复杂的话,还会超过这个数。

解决方法: 可以采用更低频率的输入时钟,节省分频寄存器资源。另外用于控制移位的计数器也可以省略,采用case或者移位运算+条件判断来做。


[此贴子已经被作者于2005-6-15 14:28:02编辑过]

我对别人要求很少,只求自己做到最好; 我很少让别人失望,行动代表我的形象。
返回列表