verilog中的字扩展和位扩展

您所在的位置:网站首页 字扩展位扩展区别 verilog中的字扩展和位扩展

verilog中的字扩展和位扩展

2024-06-25 05:26| 来源: 网络整理| 查看: 265

SRAM的拼接

存储器中有深度和宽度,深度对应字扩展(word),宽度对应位扩展(bit),在一个存储器模型中,可以把存储器表示成4096*64,那么4096对应存储器的深度,64对应存储器的宽度。2^n=4096,n=12即代表该存储器需要的地址数。 在soc设计中,往往存储器的模型达不到我们需要的标准,这个时候就需要进行字或者位的拼接。字扩展即扩展深度,需要串联存储器;位扩展即扩展宽度,即并联存储器。以下举一个简单的例子来说明。 2048x32的存储器要拼接4096x64的存储器:

2048x32->2048x64,通过位扩展即扩展宽度来完成,采用并联的方式。两个需要例化的ram_addr和en接一样的信号,输出data是两个2048x32的拼接,一个为high一个low,分别是低32bit和高32bit,这样就完成了宽度的扩展。 2048x64->4096x64,通过字扩展即扩展深度来完成,采用串联的方式。深度为4096需要12位地址,深度为2048需要11位地址。要完成深度的扩展,首先需要了解字扩展的规则。 存储器在串联时,需要将地址码分成两个部分,一部分送芯片地址线,一部分经译码后送存储芯片的片选位。译码方式有很多种,如2-4译码器等等。 对于该存储器,低11位地址接前两个ram,第12位做片选信号,其他信号接2048x32的各信号,示例代码如下: 12345678910111213141516171819202122SOC_ram_2048X64 ram_2048X64_h(             .rd_clk(rd_clk)             ,.wr_clk(wr_clk)             ,.wr_addr(wr_addr[10:0])             ,.rd_addr(rd_addr[10:0])             ,.wr_data(wr_data)             ,.rd_data(rd_data)             ,.wea(wea)             ,.rd_en((!sel_en)|rd_en)             ,.wr_en((!sel_en)|wr_en)             ); SOC_ram_2048X64 ram_2048X64_l(             .rd_clk(rd_clk)             ,.wr_clk(wr_clk)             ,.wr_addr(wr_addr[10:0])             ,.rd_addr(rd_addr[10:0])             ,.wr_data(wr_data)             ,.rd_data(rd_data)             ,.wea(wea)             ,.rd_en(sel_en|rd_en)             ,.wr_en(sel_en|wr_en)             );


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3