关于二维数组编译为什么会占用那么多逻辑单元
我现在是CPU+CPLD的结构。我的CPLD链接1602的LCD,然后我在CPLD内开辟32个byte的ram空间作为1602液晶屏的显示buf。然后我的CPU通过地址线和数据线以及读写控制线对这个显示buf进行刷新即可。中间对显示buf的操作,我把程序列出,各位帮我看看这样是不是有问题,这段程序加上去,编译结果,logic elements多了进400个,狂晕啊。(使用的是EPM1270T144).
input cpld_addr;
inout cpld_data;
input cpld_nwr;
reg lcd_buf;
always @(posedge cpld_nwr or posedge reset)
begin
if(reset)
begin
end
else
begin
if(cpld_addr == 'd0)
lcd_buf] = cpld_data;
end
end 嘿嘿,每个LE只有一个存储单元,32byte=32*8bit=248bit,单单这一项已经消耗248个LE了...... 正解。
提一句:
硬件语言,例如verilog只是种表达方式,与c语言并没什么本质区别。
关键的是,脑海要有硬件的思想。
呵呵 完全错误的编程思路…… 如何说是完全错误的编程思路,我知道32*8=256个LE。。。但是实际用了400多个。。。感觉应该不会有多处150多个LE来组合各个逻辑啊。 因为开一个缓冲区然后刷新它这是MCU编程的思路,存储空间都是线性排列的。在逻辑器件里,1个LE才能存1bit,而且由于分布开来,布线出来是很难保证时序的,没有效率。
页:
[1]