Verilog 如何减小多路复用器的大小
这是我设计内存模块的简单verilog代码(我想让我的代码更高效) 当我写入数据时,输出[0:7]=内存[address][0:7]它创建一个8X1多路复用器 通过写作Verilog 如何减小多路复用器的大小,verilog,memory-model,Verilog,Memory Model,这是我设计内存模块的简单verilog代码(我想让我的代码更高效) 当我写入数据时,输出[0:7]=内存[address][0:7]它创建一个8X1多路复用器 通过写作 module memory_module (input clk,input[0:6] address,input [0:7]data_input, input read_write,output [0:7] data_output,input enable,output ready); reg ready;
module memory_module (input clk,input[0:6] address,input [0:7]data_input,
input read_write,output [0:7] data_output,input enable,output ready);
reg ready;
reg [0:7] data_output;
reg [0:7] memory [127:0];
initial
begin
ready=0;
end
always @(posedge clk)
begin
if(enable)
begin
ready=0;
if(read_write)
begin
data_output[0:3]= memory[address][0:3];
data_output[4:7]= memory[address][4:7];
end
else
begin
memory[address][4:7]=data_input[4:7];
memory[address][0:3]=data_input[0:3];
end
ready=1;
end
else
ready=0;
end
endmodule
我是否在减少多路复用器的大小
) 不,像那样把它拆开大小是一样的 我想你在这里对地址的值进行多路复用,所以我不明白你为什么认为你有一个8x1多路复用器。您有128个可能的地址,因此如果将这些地址多路复用到输出,您应该有一个8位128对1的多路复用器
如果将其拆分,则将有两个4位128对1的MUX,这与合成中的情况完全相同 如果您想构建一个带有多路复用器的128元素dram,则不需要。你为什么想缩小尺寸?这样我就可以把我的内存做成一个二维数组,比如32x8对不起,但我还是不明白你的意思。无论你想在什么芯片上构建它,你都会受到限制吗?我不认为减少多路复用器的大小与构建二维内存阵列有什么关系。如果你需要更小的RAM,那么就使用DRAM,虽然我不知道最终的目标是什么,但我还是不明白为什么是128x1多路复用。每当我必须从内存中选择值时,它取决于地址变量(它充当mux的选择器),这是8位值。当我们说“N-to-1”mux时,我们谈论的不是地址的宽度,而是输入的数量。4对1多路复用器有2个地址位和4个数据输入。8对1多路复用器有3个地址位和8个数据输入。256对1多路复用器有8个地址位和256个数据输入。
data_output[0:3]= memory[address][0:3];
data_output[4:7]= memory[address][4:7];