具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明,使本发明的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按比例绘制附图,重点在于示出本发明的主旨。
如图1所示,本发明提供一种用于可配置位宽RAM的写入路径选择及控制电路,其中,包括:地址采样电路101,用来接收地址输入信号,并输出采样地址信号;地址使能译码电路103,接收配置信号,并根据配置信号译码出地址信号对应位的地址使能信号;位宽配置译码电路104,接收配置信号,并根据配置信号输出位宽控制信号;位宽配置译码电路104根据配置信号输出位宽分别为1、2、4、8、16、32的位宽控制信号;地址跳转电路102,接收采样地址信号以及地址信号对应位的使能信号,并根据所述采样地址信号以及所述地址信号对应位的使能信号输出32位的写使能信号;路径选择控制电路105,根据所述地址跳转电路输出的32位的写使能信号和所述位宽配置译码电路输出的位宽控制有效信号,输出32对互补的路径选择控制信号;写入路径选择电路106,根据路径选择控制信号,将32位的写入数据配置位宽进行输出,写入路径选择电路106根据路径选择控制信号将32位的写入数据输入端的低1位、或者低2位、或者低4位、或者低8位、或者低16位、或者低32位与写入数据输出端连接。
输入到地址采样电路101输入端107的5位地址信号addr<4:0>,输入到地址采样电路101输入端108的1位地址clk信号,输入到地址使能译码电路103与位宽配置译码电路104的输入端109的3位配置信号cfgbit<2:0>。
地址采样电路101通过其输出端112输出到地址跳转电路102的信号为5位信号addrq<4:0>和addrqn<4:0>,地址使能译码电路103输出到地址跳转电路102的信号为5位addren<4:0>,地址跳转电路102输出到路径选择控制电路105的信号为32位wren<31:0>,位宽配置译码电路104输出到路径选择控制电路105的信号为6个位宽选择信号w1、w2、w4、w8、w16、w32,路径选择控制电路105输出到读取路径选择电路106的两组32位信号mux<31:0>和muxn<31:0>。
该电路可以用于位宽为1、2、4、8、16、32的可配置位宽RAM,即可以根据配置信号109和地址信号107决定将写入数据输入端的最低1位dil<0>分别连接到32位写入数据输出端dir<31:0>,即1位位宽;或者根据配置信号109和地址信号107决定将写入数据输入端的最低2位dil<1:0>分别连接到32位写入数据输出端dir<31:0>,即2位位宽;或者根据配置信号109和地址信号107决定将写入数据输入端的最低4位dil<3:0>分别连接到32位写入数据输出端dir<31:0>,即4位位宽;或者根据配置信号109和地址信号107决定将写入数据输入端的最低8位dil<7:0>分别连接到32位写入数据输出端dirr<31:0>、即8位位宽;或者根据配置信号109和地址信号107决定将写入数据输入端的最低16位dil<15:0>分别连接到32位写入数据输出端dir<31:0>,即16位位宽;或者根据配置信号109和地址信号107决定将写入数据输入端的32位dil<31:0>连接到32位写入数据输出端dir<31:0>,即32位位宽。
如图2所示,地址采样电路为一个D触发器组201,所述D触发器组201包括5个D触发器,根据地址clk信号203以及地址信号202,所述D触发器组输出采样地址信号,所述采样地址信号包括时钟采样后的同相信号addrq<4:0>和时钟采样后的反相信号addrqn<4:0>。
所述配置信号为三组配置输入信号,所述地址使能译码电路包括三输入或非门、二输入与门、非门、二输入与非门、二输入或门、两个二输入或非门和五个驱动器,所述地址使能信号根据配置信号的不同分别控制对应位的地址信号是否有效。如图3所示,在本实施例中,301为配置信号输入cfgbit<2>,302为配置信号输入cfgbit<1>,303为配置信号输入cfgbit<0>。301、302和303经过三输入或非门309和驱动器310后生成1位地址使能信号addren<0>;301、302经过二输入或非门311和驱动器312后生成1位地址使能信号addren<1>;302和303经过二输入与门313后和301共同输入二输入或非门314后,经过驱动器315后生成1位地址使能信号addren<2>;301经过非门316和驱动器317后生成1位地址使能信号addren<3>;302和303经过二输入或门318后和301共同输入二输入与非门319后,经过驱动器320后生成1位地址使能信号addren<4>,地址使能信号addren<4:0>根据配置信号的不同分别控制对应位的地址信号是否有效。配置信号与地址使能信号的对应关系见图8,cfgbit<2:0>为“000”时,addren<4:0>为“11111”;cfgbit<2:0>为“001”时,addren<4:0>为“11110”;cfgbit<2:0>为“010”时,addren<4:0>为“11100”;cfgbit<2:0>为“011”时,addren<4:0>为“11000”;cfgbit<2:0>为“100”时,addren<4:0>为“10000”;cfgbit<2:0>为“101”时,addren<4:0>为“00000”。
所述配置信号为三组配置输入信号,所述位宽配置译码电路包括三个反相器和六个三输入与门,所述三输入与门根据所述配置信号输出位宽控制信号。如图4所示,401为配置信号输入cfgbit<2>,402为配置信号输入cfgbit<1>,403为配置信号输入cfgbit<0>。401经过反相器410后生成401的反相信号,402经过反相器411后生成402的反相信号,403经过反相器412后生成403的反相信号。401的反相信号、402的反相信号以及403的反相信号,经过三输入与门413后生成位宽控制信号w1,w1表示1位位宽模式有效;401的反相信号、402的反相信号以及403,经过三输入与门414后生成位宽控制信号w2,w2表示2位位宽模式有效;401的反相信号、402以及403的反相信号,经过三输入与门415后生成位宽控制信号w4,w4表示4位位宽模式有效;401的反相信号、402以及403经过三输入与门416后生成位宽控制信号w8,w8表示8位位宽模式有效;401、402的反相信号以及403的反相信号,经过三输入与门417后生成位宽控制信号w16,w16表示16位位宽模式有效;401、402的反相信号以及403,经过三输入与门418后生成位宽控制信号w32,w32表示32位位宽模式有效。配置信号与位宽控制信号的对应关系见图8,cfgbit<2:0>为“000”时,w1有效;cfgbit<2:0>为“001”时,w2有效;cfgbit<2:0>为“010”时,w4有效;cfgbit<2:0>为“011”时,w8有效;cfgbit<2:0>为“100”时,w16有效;cfgbit<2:0>为“101”时,w32有效。
所述地址跳转电路包括32个写使能信号输出端,地址跳转电路的每个输出端均为地址采样信号(或者其反相信号)分别与对应位的地址使能信号的与非输出后的与信号。如图5所示,在本实施例中,地址跳转电路的输出端包括500~531,即wren<0>~wren<31>,均为高有效;输入端包括en<4:0>、q<4:0>和qn<4:0>。其中en<4:0>对应的是图1中的信号addren<4:0>;q<4:0>对应的是图1中的信号addrq<4:0>;qn<4:0>对应的是图1中的信号addrqn<4:0>。地址跳转电路的每个输出端wren<i>(i=0,1…31),均为5位地址信号(或者反相信号)分别与对应位的使能信号的与非输出的与信号。
500是由“q<4>q<3>q<2>q<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
501是由“q<4>q<3>q<2>q<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
502是由“q<4>q<3>q<2>qn<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
503是由“q<4>q<3>q<2>qn<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
504是由“q<4>q<3>qn<2>q<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
505是由“q<4>q<3>qn<2>q<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
506是由“q<4>q<3>qn<2>qn<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
507是由“q<4>q<3>qn<2>qn<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
508是由“q<4>qn<3>q<2>q<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
509是由“q<4>qn<3>q<2>q<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
510是由“q<4>qn<3>q<2>qn<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
511是由“q<4>qn<3>q<2>qn<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
512是由“q<4>qn<3>qn<2>q<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
513是由“q<4>qn<3>qn<2>q<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
514是由“q<4>qn<3>qn<2>qn<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
515是由“q<4>qn<3>qn<2>qn<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
516是由“qn<4>q<3>q<2>q<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
517是由“qn<4>q<3>q<2>q<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
518是由“qn<4>q<3>q<2>qn<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
519是由“q<4>nq<3>q<2>qn<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
520是由“qn<4>q<3>qn<2>q<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
521是由“qn<4>q<3>qn<2>q<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
522是由“qn<4>q<3>qn<2>qn<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
523是由“qn<4>q<3>qn<2>qn<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
524是由“qn<4>qn<3>q<2>q<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
525是由“qn<4>qn<3>q<2>q<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
526是由“qn<4>qn<3>q<2>qn<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
527是由“qn<4>qn<3>q<2>qn<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
528是由“qn<4>qn<3>qn<2>q<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
529是由“qn<4>qn<3>qn<2>q<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号;
530是由“qn<4>qn<3>qn<2>qn<1>q<0>”分别和对应位的地址使能信号的与非输出的与信号;
531是由“qn<4>qn<3>qn<2>qn<1>qn<0>”分别和对应位的地址使能信号的与非输出的与信号。
路径选择控制电路包括32对输出端,每对输出端输出互补的路径选择控制信号,每对互补的路径选择控制信号互为反相信号,每个路径选择信号均为对应的写使能信号与位宽控制信号逻辑运算后的结果。如图6所示,地址跳转电路的输出端包括600~631,即mux<0:31>,以及相应位的反相信号632~663,即muxn<0:31>,均为高有效;其中muxn<i>是mux<i>的反相信号。输入端包括wren<31:0>,对应的是图1中的连线信号wren<31:0>,以及位宽控制信号w1、w2、w4、w8、w16、w32,w32。
Mux<0>是“wren<0>和w1的与非结果”和“wren<0>和w2的与非结果”和“wren<0>和w4的与非结果”和“wren<0>和w8的与非结果”和“wren<0>和w16的与非结果”和“w32的非结果”的与非结果;
mux<1>是“wren<16>和w1的与非结果”和“wren<16>和w2的与非结果”和“wren<16>和w4的与非结果”和“wren<16>和w8的与非结果”和“wren<16>和w16的与非结果”的与非结果;
mux<2>是“wren<8>和w1的与非结果”和“wren<8>和w2的与非结果”和“wren<8>和w4的与非结果”和“wren<8>和w8的与非结果”的与非结果;
mux<3>是“wren<24>和w1的与非结果”和“wren<24>和w2的与非结果”和“wren<24>和w4的与非结果”和“wren<24>和w8的与非结果”的与非结果;
mux<4>是“wren<4>和w1的与非结果”和“wren<4>和w2的与非结果”和“wren<4>和w4的与非结果”的与非结果;
mux<5>是“wren<20>和w1的与非结果”和“wren<20>和w2的与非结果”和“wren<20>和w4的与非结果”的与非结果;
mux<6>是“wren<12>和w1的与非结果”和“wren<12>和w2的与非结果”和“wren<12>和w4的与非结果”的与非结果;
mux<7>是“wren<28>和w1的与非结果”和“wren<28>和w2的与非结果”和“wren<28>和w4的与非结果”的与非结果;
mux<8>是“wren<2>和w1的与非结果”和“wren<2>和w2的与非结果”的与非结果;
mux<9>是“wren<18>和w1的与非结果”和“wren<18>和w2的与非结果”的与非结果;
mux<10>是“wren<10>和w1的与非结果”和“wren<10>和w2的与非结果”的与非结果;
mux<11>是“wren<26>和w1的与非结果”和“wren<26>和w2的与非结果”的与非结果;
mux<12>是“wren<6>和w1的与非结果”和“wren<6>和w2的与非结果”的与非结果;
mux<13>是“wren<22>和w1的与非结果”和“wren<22>和w2的与非结果”的与非结果;
mux<14>是“wren<14>和w1的与非结果”和“wren<14>和w2的与非结果”的与非结果;
mux<15>是“wren<30>和w1的与非结果”和“wren<30>和w2的与非结果”的与非结果;
mux<16>是wren<1>和w1的与结果;
mux<17>是wren<17>和w1的与结果;
mux<18>是wren<9>和w1的与结果;
mux<19>是wren<25>和w1的与结果;
mux<20>是wren<5>和w1的与结果;
mux<21>是wren<21>和w1的与结果;
mux<22>是wren<13>和w1的与结果;
mux<23>是wren<29>和w1的与结果;
mux<24>是wren<3>和w1的与结果;
mux<25>是wren<19>和w1的与结果;
mux<26>是wren<11>和w1的与结果;
mux<27>是wren<27>和w1的与结果;
mux<28>是wren<7>和w1的与结果;
mux<29>是wren<23>和w1的与结果;
mux<30>是wren<15>和w1的与结果;
mux<31>是wren<31>和w1的与结果。
写入路径选择电路包括写入数据信号输出端、写入数据输入端和设于所述所述写入数据信号输入端与所述写入数据信号输出端之间的传输门,所述传输门两端的连通受控于路径选择控制信号。写入路径选择电路的结构如图7所示,因为写入路径选择电路的结构相对复杂,所以在图7中用多图描述该电路,多图中同样名称的线表示为连接在一起的同一个线,多图所描述的各个电路均为写入路径选择电路的一部分,同时存在于写入路径选择电路中。
图7(a)所示为在写入路径选择电路中mux<0>(或muxn<0>)信号所控制的部分。其中700~731表示写入数据输入端信号dil<0>~dil<31>;732~763表示写入数据输出端信号dir<0>~dir<31>;764表示受mux<0>和muxn<0>信号控制的传输门,mux<0>为1时,传输门两端的连线连接在一起,mux<0>为0时,传输门两端的连线不连接。在此约定,在图7中出现的传输门均受到mux<i>和muxn<i>的控制(i=0,1….31),且当mux<i>为1时,传输门两端的连线连接在一起,mux<i>为0时,传输门两端的连线不连接。如图7(a)所示,当mux<0>为1时,dil<31:0>与dir<31:0>对位顺序一一连接。
图7(b)所示为在写入路径选择电路中mux<1>(muxn<1>)、mux<2>(muxn<2>)和mux<3>(muxn<3>)信号所控制的部分。
765为mux<1>(muxn<1>)所控制的电路,当mux<1>为1时,dil<15:0>与dir<31:16>对位顺序一一连接,当mux<1>为0时,dil<15:0>与dir<31:16>不连接;
766为mux<2>(muxn<2>)所控制的电路,当mux<2>为1时,dil<7:0>与dir<15:8>对位顺序一一连接,当mux<2>为0时,dil<7:0>与dir<15:8>不连接;
767为mux<3>(muxn<3>)所控制的电路,当mux<3>为1时,dil<7:0>与dir<31:24>对位顺序一一连接,当mux<3>为0时,dil<7:0>与dir<31:24>不连接。
图7(c)所示为在写入路径选择电路中从mux<4>(muxn<4>)到mux<15>(muxn<15>)信号所控制的部分。
768为mux<4>(muxn<4>)所控制的电路,当mux<4>为1时,dil<3:0>与dir<7:4>对位顺序一一连接,当mux<4>为0时,dil<3:0>与dir<7:4>不连接;
769为mux<5>(muxn<5>)所控制的电路,当mux<5>为1时,dil<3:0>与dir<23:20>对位顺序一一连接,当mux<5>为0时,dil<3:0>与dir<23:20>不连接;
770为mux<6>(muxn<6>)所控制的电路,当mux<6>为1时,dil<3:0>与dir<15:12>对位顺序一一连接,当mux<6>为0时,dil<3:0>与dir<15:12>不连接;
771为mux<7>(muxn<7>)所控制的电路,当mux<7>为1时,dil<3:0>与dir<31:28>对位顺序一一连接,当mux<7>为0时,dil<3:0>与dir<31:28>不连接;
772为mux<8>(muxn<8>)所控制的电路,当mux<8>为1时,dil<1:0>与dir<3:2>对位顺序一一连接,当mux<8>为0时,dil<1:0>与dir<3:2>不连接;
773为mux<9>(muxn<9>)所控制的电路,当mux<9>为1时,dil<1:0>与dir<19:18>对位顺序一一连接,当mux<9>为0时,dil<1:0>与dir<19:18>不连接;
774为mux<10>(muxn<10>)所控制的电路,当mux<10>为1时,dil<1:0>与dir<11:10>对位顺序一一连接,当mux<10>为0时,dil<1:0>与dir<11:10>不连接;
775为mux<11>(muxn<11>)所控制的电路,当mux<11>为1时,dil<1:0>与dir<27:26>对位顺序一一连接,当mux<11>为0时,dil<1:0>与dir<27:26>不连接;
776为mux<12>(muxn<12>)所控制的电路,当mux<12>为1时,dil<1:0>与dir<7:6>对位顺序一一连接,当mux<11>为0时,dil<1:0>与dir<7:6>不连接;
777为mux<13>(muxn<13>)所控制的电路,当mux<13>为1时,dil<1:0>与dir<23:22>对位顺序一一连接,当mux<13>为0时,dil<1:0>与dir<23:22>不连接;
778为mux<14>(muxn<14>)所控制的电路,当mux<14>为1时,dil<1:0>与dir<15:14>对位顺序一一连接,当mux<14>为0时,dil<1:0>与dir<15:14>不连接;
779为mux<15>(muxn<15>)所控制的电路,当mux<15>为1时,dil<1:0>与dir<31:30>对位顺序一一连接,当mux<15>为0时,dil<1:0>与dir<31:30>不连接。
图7(d)所示为在写入路径选择电路中从mux<16>(muxn<16>)到mux<31>(muxn<31>)信号所控制的部分。
当mux<16>为1时,dil<0>与dir<1>对位顺序一一连接,当mux<16>为0时,dil<0>与dir<1>不连接;
当mux<17>为1时,dil<0>与dir<17>对位顺序一一连接,当mux<17>为0时,dil<0>与dir<17>不连接;
当mux<18>为1时,dil<0>与dir<9>对位顺序一一连接,当mux<18>为0时,dil<0>与dir<1>不连接;
当mux<19>为1时,dil<0>与dir<25>对位顺序一一连接,当mux<19>为0时,dil<0>与dir<25>不连接;
当mux<20>为1时,dil<0>与dir<5>对位顺序一一连接,当mux<20>为0时,dil<0>与dir<5>不连接;
当mux<21>为1时,dil<0>与dir<21>对位顺序一一连接,当mux<21>为0时,dil<0>与dir<21>不连接;
当mux<22>为1时,dil<0>与dir<13>对位顺序一一连接,当mux<22>为0时,dil<0>与dir<13>不连接;
当mux<23>为1时,dil<0>与dir<29>对位顺序一一连接,当mux<23>为0时,dil<0>与dir<29>不连接;
当mux<24>为1时,dil<0>与dir<3>对位顺序一一连接,当mux<24>为0时,dil<0>与dir<3>不连接;
当mux<25>为1时,dil<0>与dir<19>对位顺序一一连接,当mux<25>为0时,dil<0>与dir<19>不连接;
当mux<26>为1时,dil<0>与dir<11>对位顺序一一连接,当mux<26>为0时,dil<0>与dir<11>不连接;
当mux<27>为1时,dil<0>与dir<27>对位顺序一一连接,当mux<27>为0时,dil<0>与dir<27>不连接;
当mux<28>为1时,dil<0>与dir<7>对位顺序一一连接,当mux<28>为0时,dil<0>与dir<7>不连接;
当mux<29>为1时,dil<0>与dir<23>对位顺序一一连接,当mux<29>为0时,dil<0>与dir<23>不连接;
当mux<30>为1时,dil<0>与dir<15>对位顺序一一连接,当mux<30>为0时,dil<0>与dir<15>不连接;
当mux<31>为1时,dil<0>与dir<31>对位顺序一一连接,当mux<31>为0时,dil<0>与dir<31>不连接。
图7(e)所示为写入路径选择电路中的写入数据输出端口的上拉结构,该部分的目的是,在写入数据输出端口未被使用的时候,该端口被上拉为“1”。如图所示,图中780为P管,图7(e)的所有MOS管均为同类型的P管,当某个写入数据输出端所连接的上拉管的所有控制信号全部为“0”时,即该输出端所涉及的控制信号全部没有处于有效状态,则该写入数据输出端被拉高。如图所示,
dir<31>的上拉信号分别是mux<31>、mux<15>、mux<7>、mux<3>、mux<1>、mux<0>;
dir<30>的上拉信号分别是mux<15>、mux<7>、mux<3>、mux<1>、mux<0>;
dir<29>的上拉信号分别是mux<23>、mux<7>、mux<3>、mux<1>、mux<0>;
dir<28>的上拉信号分别是mux<7>、mux<3>、mux<1>、mux<0>;
dir<27>的上拉信号分别是mux<27>、mux<11>、mux<3>、mux<1>、mux<0>;
dir<26>的上拉信号分别是mux<11>、mux<3>、mux<1>、mux<0>;
dir<25>的上拉信号分别是mux<19>、mux<3>、mux<1>、mux<0>;
dir<24>的上拉信号分别是mux<3>、mux<1>、mux<0>;
dir<23>的上拉信号分别是mux<29>、mux<13>、mux<5>、mux<1>、mux<0>;
dir<22>的上拉信号分别是mux<13>、mux<5>、mux<1>、mux<0>;
dir<21>的上拉信号分别是mux<21>、mux<5>、mux<1>、mux<0>;
dir<20>的上拉信号分别是mux<5>、mux<1>、mux<0>;
dir<19>的上拉信号分别是mux<25>、mux<19>、mux<1>、mux<0>;
dir<18>的上拉信号分别是mux<9>、mux<1>、mux<0>;
dir<17>的上拉信号分别是mux<17>、mux<1>、mux<0>;
dir<16>的上拉信号分别是mux<1>、mux<0>;
dir<15>的上拉信号分别是mux<30>、mux<14>、mux<6>、mux<2>、mux<0>;
dir<14>的上拉信号分别是mux<14>、mux<6>、mux<2>、mux<0>;
dir<13>的上拉信号分别是mux<22>、mux<6>、mux<2>、mux<0>;
dir<12>的上拉信号分别是mux<6>、mux<2>、mux<0>;
dir<11>的上拉信号分别是mux<26>、mux<11>、mux<2>、mux<0>;
dir<10>的上拉信号分别是mux<10>、mux<2>、mux<0>;
dir<9>的上拉信号分别是mux<18>、mux<2>、mux<0>;
dir<8>的上拉信号分别是mux<2>、mux<0>;
dir<7>的上拉信号分别是mux<28>、mux<12>、mux<4>、mux<2>、mux<0>;
dir<6>的上拉信号分别是mux<12>、mux<4>、mux<2>、mux<0>;
dir<5>的上拉信号分别是mux<20>、mux<4>、mux<2>、mux<0>;
dir<4>的上拉信号分别是mux<4>、mux<2>、mux<0>;
dir<3>的上拉信号分别是mux<24>、mux<8>、mux<2>、mux<0>;
dir<2>的上拉信号分别是mux<8>、mux<2>、mux<0>;
dir<1>的上拉信号分别是mux<16>、mux<2>、mux<0>;
dir<0>的上拉信号分别是mux<2>、mux<0>;
本实施例的工作原理如下:
当配置信号cfgbit<2:0>为“000”时,表示当前的位宽为1,即W1信号有效;因为当前的位宽为1,而最大位宽为32,为了充分利用所有的存储资源,需要所有的5位地址全部可用,才可以将1位位宽的写入数据选择性地分配给最大为32位的存储空间,所以地址的使能信号addren<4:0>为“11111”,即所有的5位地址全部可用。
5位地址信号在时钟的上升沿被采样,地址跳转电路102随着被采样的地址的变化而跳转,当被采样的地址addr<4:0>为“00000”时,wren<0>信号为“1”,其余wren<i>信号为“0”;当被采样的地址addr<4:0>为“00001”时,wren<1>信号为“1”,其余wren<i>信号为“0”;也就是说32位的wren<i>信号随着5为地址信号addr<4:0>的采样变化而变化,每次只有1位wren<i>信号为1,即i为addr<4:0>表征的十进制值。
路径选择控制电路105随位宽配置译码电路104和地址跳转电路102的跳转而跳转。在w1信号为1,其他位宽有效信号为0时:
mux<0>随着wren<0>跳转而跳转;
mux<1>随着wren<16>跳转而跳转;
mux<2>随着wren<8>跳转而跳转;
mux<3>随着wren<24>跳转而跳转;
mux<4>随着wren<4>跳转而跳转;
mux<5>随着wren<20>跳转而跳转;
mux<6>随着wren<12>跳转而跳转;
mux<7>随着wren<28>跳转而跳转;
mux<8>随着wren<2>跳转而跳转;
mux<9>随着wren<18>跳转而跳转;
mux<10>随着wren<10>跳转而跳转;
mux<11>随着wren<26>跳转而跳转;
mux<12>随着wren<6>跳转而跳转;
mux<13>随着wren<22>跳转而跳转;
mux<14>随着wren<14>跳转而跳转;
mux<15>随着wren<30>跳转而跳转;
mux<16>随着wren<1>跳转而跳转;
mux<17>随着wren<17>跳转而跳转;
mux<18>随着wren<9>跳转而跳转;
mux<19>随着wren<25>跳转而跳转;
mux<20>随着wren<25>跳转而跳转;
mux<21>随着wren<21>跳转而跳转;
mux<22>随着wren<13>跳转而跳转;
mux<13>随着wren<29>跳转而跳转;
mux<24>随着wren<3>跳转而跳转;
mux<25>随着wren<19>跳转而跳转;
mux<26>随着wren<11>跳转而跳转;
mux<27>随着wren<27>跳转而跳转;
mux<28>随着wren<7>跳转而跳转;
mux<29>随着wren<23>跳转而跳转;
mux<30>随着wren<15>跳转而跳转;
mux<31>随着wren<31>跳转而跳转。
写入路径选择电路106负责根据路径选择控制电路105,即地址和配置信号来决定写入数据输入端和写入数据输出端的连接关系。当w1为1,地址信号addr<4:0>为“00000”时,dil<0>连接dir<0>;当w1为1,地址信号addr<4:0>为“00001”时,dil<0>连接dir<1>;当w1为1,地址信号addr<4:0>为“00010”时,dil<0>连接dir<2>……当w1为1,地址信号addr<4:0>为“11111”时,dil<0>连接dir<31>;即随着5位地址信号的跳转,dil<0>逐次与dir<i>一一连接,i即地址的十进制值,从而实现位宽为1时,写入路径的选择功能。
同理,当配置信号cfgbit<2:0>为“001”时,表示当前的位宽为2,即W2信号有效;因为当前的位宽为2,而最大位宽为32,为了充分利用所有的存储资源,需要4位地址全部可用,才可以将2位位宽的读取数据选择性地分配给最大为32位的存储空间,所以地址的使能信号addren<4:0>为“11110”,即所有的高4位地址可用。
5位地址信号在时钟的上升沿被采样,地址跳转电路102随着被采样的地址信号的变化而跳转,因为地址跳转电路的输入addren<4:0>为“11110”,所以只有4位地址addr<4:1>有效。当被采样的地址addr<4:1>为“0000”时,wren<0>和wren<1>信号为“1”,其余wren<i>信号为“0”;当被采样的地址addr<3:0>为“0001”时,wren<2>和wren<3>信号为“1”,其余wren<i>信号为“0”;也就是说32位的wren<i>信号随着5位地址信号addr<4:0>的采样变化而变化,每次只有2位wren<i>和wren<i+1>信号为1,即i为addr<4:0>(最低位为0)表征的十进制值。
路径选择控制电路105随位宽配置译码电路104和地址跳转电路102的跳转而跳转。在w2信号为1,其他位宽有效信号为0时:
mux<0>随着wren<0>跳转而跳转;
mux<1>随着wren<16>跳转而跳转;
mux<2>随着wren<8>跳转而跳转;
mux<3>随着wren<24>跳转而跳转;
mux<4>随着wren<4>跳转而跳转;
mux<5>随着wren<20>跳转而跳转;
mux<6>随着wren<12>跳转而跳转;
mux<7>随着wren<28>跳转而跳转;
mux<8>随着wren<2>跳转而跳转;
mux<9>随着wren<18>跳转而跳转;
mux<10>随着wren<10>跳转而跳转;
mux<11>随着wren<26>跳转而跳转;
mux<12>随着wren<6>跳转而跳转;
mux<13>随着wren<22>跳转而跳转;
mux<14>随着wren<14>跳转而跳转;
mux<15>随着wren<30>跳转而跳转;
其余mux<i>(i=16….31)信号为0。
写入路径选择电路106负责根据路径选择控制电路105,即地址和配置信号来决定写入数据输入端和写入数据输出端的连接关系。当w2为1,地址信号addr<4:1>为“0000”时,dil<1:0>连接dir<1:0>;当w2为1,地址信号addr<4:1>为“0001”时,dil<1:0>连接dir<3:2>;当w2为1,地址信号addr<4:1>为“0010”时,dil<1:0>连接dir<5:4>……当w2为1,地址信号addr<4:1>为“1111”时,dil<1:0>连接dir<31:30>;即随着4位地址信号的跳转,dil<1:0>逐次与dir<2i+1:2i>一一连接,i即地址的十进制值,dir<i>信号在不被连接的时候均处于上拉状态,从而实现位宽为2时,写入路径的选择功能。
当配置信号cfgbit<2:0>为“010”时,表示当前的位宽为4,即W4信号有效;因为当前的位宽为4,而最大位宽为32,为了充分利用所有的存储资源,需要3位地址全部可用,才可以将4位位宽的读取数据选择性地分配给最大为32位的存储空间,所以地址的使能信号addren<4:0>为“11100”,即所有的高3位地址可用。
5位地址信号在时钟的上升沿被采样,地址跳转电路102随着被采样的地址的变化而跳转,因为地址跳转电路的输入addren<4:0>为“11100”,所以只有3位地址addr<4:2>有效。当被采样的地址addr<4:2>为“000”时,wren<0>、wren<1>、wren<2>和wren<3>信号为“1”,其余wren<i>信号为“0”;当被采样的地址addr<4:2>为“001”时,wren<4>、wren<5>、wren<6>和wren<7>信号为“1”,其余wren<i>信号为“0”;也就是说32位的wren<i>信号随着3为地址信号addr<4:2>的采样变化而变化,每次只有4位wren<i>、wren<i+1>、wren<i+2>和wren<i+3>信号为1,即i为addr<4:0>(低2位为0)表征的十进制值。
路径选择控制电路105随位宽配置译码电路104和地址跳转电路102的跳转而跳转,在w4信号为1,其他位宽有效信号为0时:
mux<0>随着wren<0>跳转而跳转;
mux<1>随着wren<16>跳转而跳转;
mux<2>随着wren<8>跳转而跳转;
mux<3>随着wren<24>跳转而跳转;
mux<4>随着wren<4>跳转而跳转;
mux<5>随着wren<20>跳转而跳转;
mux<6>随着wren<12>跳转而跳转;
mux<7>随着wren<28>跳转而跳转;
其余mux<i>(i=8….31)信号为0。
写入路径选择电路106负责根据路径选择控制电路105,即地址和配置信号来决定写入数据输入端和写入数据输出端的连接关系。当w4为1,地址信号addr<4:2>为“000”时,dil<3:0>连接dir<3:0>;当w4为1,地址信号addr<4:2>为“001”时,dil<3:0>连接dir<7:4>;当w4为1,地址信号addr<4:2>为“010”时,dil<3:0>连接dir<11:8>……当w4为1,地址信号addr<4:2>为“1111”时,dil<3:0>连接dir<31:28>;即随着3位地址信号的跳转,dil<3:0>逐次与dir<4i+3:4i>一一连接,i即地址的十进制值,dir<i>信号在不被连接的时候均处于上拉状态,从而实现位宽为4时,写入路径的选择功能。
当配置信号cfgbit<2:0>为“011”时,表示当前的位宽为8,即W8信号有效;因为当前的位宽为8,而最大位宽为32,为了充分利用所有的存储资源,需要2位地址全部可用,才可以将8位位宽的读取数据选择性地分配给最大为32位的存储空间,所以地址的使能信号addren<4:0>为“11000”,即所有的高2位地址可用。
5位地址信号在时钟的上升沿被采样,地址跳转电路102随着被采样的地址的变化而跳转,因为地址跳转电路的输入addren<4:0>为“11000”,所以只有2位地址addr<4:3>有效。当被采样的地址addr<4:3>为“00”时,wren<n>(n=0,1,2…7)信号为“1”,其余wren<i>信号为“0”;当被采样的地址addr<4:3>为“01”时,wren<n>(n=7,8,9…15)信号为“1”,其余wren<i>信号为“0”;也就是说32位的wren<i>信号随着2为地址信号addr<4:3>的采样变化而变化,每次只有8位wren<i>、wren<i+1>、wren<i+2>、…、wren<i+7>和wren<i+28>信号为1,即i为addr<4:3>(低3位为0)表征的十进制值。
路径选择控制电路105随位宽配置译码电路104和地址跳转电路102的跳转而跳转,在w8信号为1,其他位宽有效信号为0时:
mux<0>随着wren<0>跳转而跳转;
mux<1>随着wren<16>跳转而跳转;
mux<2>随着wren<8>跳转而跳转;
mux<3>随着wren<24>跳转而跳转;
其余mux<i>(i=4….31)信号为0。
写入路径选择电路106负责根据路径选择控制电路105,即地址和配置信号来决定写入数据输入端和写入数据输出端的连接关系。当w8为1,地址信号addr<4:3>为“00”时,dil<7:0>连接dir<7:0>;当w8为1,地址信号addr<4:3>为“01”时,dil<7:0>连接dir<15:8>;当w8为1,地址信号addr<4:3>为“10”时,dil<7:0>连接dir<23:16>;当w8为1,地址信号addr<4:3>为“11”时,dil<7:0>连接dir<31:24>;即随着2位地址信号的跳转,dil<7:0>逐次与dir<8i+7:8i>一一连接,i即地址的十进制值,dir<i>信号在不被连接的时候均处于上拉状态,从而实现位宽为8时,写入路径的选择功能。
当配置信号cfgbit<2:0>为“100”时,表示当前的位宽为16,即W16信号有效;因为当前的位宽为16,而最大位宽为32,为了充分利用所有的存储资源,需要1位地址全部可用,才可以将16位位宽的读取数据选择性地分配给最大为32位的存储空间,所以地址的使能信号addren<4:0>为“10000”,即所有的高1位地址可用。
5位地址信号在时钟的上升沿被采样,地址跳转电路102随着被采样的地址的变化而跳转,因为地址跳转电路的输入addren<4:0>为“00001”,所以只有1位地址addr<4>有效。当被采样的地址addr<4>为“0”时,wren<0>,wren<1>……wren<15>信号为“1”,其余wren<i>信号为“0”;当被采样的地址addr<4>为“1”时,wren<16>,wren<17>……wren<31>信号为“1”,其余wren<i>信号为“0”;也就是说32位的wren<i>信号随着1位地址信号addr<4>的采样变化而变化,每次只有16位wren<i>信号为1。
路径选择控制电路105随位宽配置译码电路104和地址跳转电路102的跳转而跳转,在w16信号为1,其他位宽有效信号为0时,mux<0>随着wren<0>跳转而跳转;mux<1>随着wren<16>跳转而跳转;其余mux<i>(i=2….31)信号为0。
写入路径选择电路106负责根据路径选择控制电路105,即地址和配置信号来决定写入数据输入端和写入数据输出端的连接关系。当w16为1,地址信号addr<4>为“0”时,dil<15:0>连接dir<15:0>;当w16为1,地址信号addr<4>为“1”时,dil<15:0>连接dir<31:16>;即随着1位地址信号的跳转,dil<15:0>逐次与dir<16i+15:16i>一一连接,i即地址的十进制值,dir<i>信号在不被连接的时候均处于上拉状态,从而实现位宽为16时,写入路径的选择功能。
当配置信号cfgbit<2:0>为“101”时,表示当前的位宽为32,即W32信号有效;因为当前的位宽为32,而最大位宽为32,即已经充分利用了所有的存储资源,不需要地址信号译码,所以地址的使能信号addren<4:0>为“00000”,即不需要地址译码读取路径电路。
5位地址信号在时钟的上升沿被采样,地址跳转电路102随着被采样的地址的变化而跳转,因为地址跳转电路的输入addren<4:0>为“00000”,所以全部地址无效。Wren<i>均为1。
路径选择控制电路105随位宽配置译码电路104和地址跳转电路102的跳转而跳转,在w32信号为1,其他位宽有效信号为0时,mux<i>(i=0….31)信号全部为1,不随地址跳转而跳转。
写入路径选择电路106负责根据路径选择控制电路105,即地址和配置信号来决定写入数据输入端和写入数据输出端的连接关系。当w32为1,mux<0>为1,dil<31:0>与dir<31:0>一一连接,从而实现了位宽为32时,写入路径的选择功能。
采用了可配置的电路设计,利用地址使能译码电路以及位宽配置译码电路将配置信号转换为地址使能信号与位宽控制有效信号,再通过地址跳转电路将地址信号与地址使能信号转换为写使能信号,最后通过路径选择控制电路根据写使能信号与位宽控制有效信号输出路径选择控制信号并控制写入路径选择电路中的传输们,从而控制写入路径的位宽,即RAM的写入路径的位宽可以根据配置信号来决定。这样是得RAM可以更加方便的应用与FPGA等可配置器件中。本发明的读取路径的可配置位宽的最大位数可达到32位,扩展了RAM的实用范围,使得RAM具有了快速写入数据的功能。
在以上的描述中阐述了很多具体细节以便于充分理解本发明。但是以上描述仅是本发明的较佳实施例而已,本发明能够以很多不同于在此描述的其它方式来实施,因此本发明不受上面公开的具体实施的限制。同时任何熟悉本领域技术人员在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。