单口RAM与伪双口RAM、真双口RAM的区别在于:
单口RAM只有一个时钟(clka)(时钟上升沿到来时对数据进行写入或读出)、一组输入输出数据线(dina&douta)、一组地址线(addra)、一个使能端(ena)(ena==1时可以进行读或写的操作,ena == 0时无法进行读或写的操作)、一个写使能端(wea)(在ena == 1的情况下,wea == 1时只写不读,wea == 0时,只读不写)。单口RAM,读写无法同时进行,只能或读或写。
伪双口RAM有两个时钟(clka&clkb)、一组输入输出数据线(dina&doutb)、两组地址线(addra&addrb)、两个使能端(ena&enb),一个写使能(wea),一个端口只读(porta),另一个端口只写(portb)。整体上,读、写可以同时进行。
真双口RAM有两个时钟(clka&clkb)、两组输入输出数据线(dina&douta&dinb&doutb)、两组地址线(addra&addrb)、两个使能端(ena&enb)、两个写使能端(wea&web)。两个端口都可以进行读写操作(porta和portb可以一起读或者一起写或者一个读一个写)。整体上读写可以同时进行。
单口ROM和双口ROM的区别
单口ROM只有一个时钟(clka)、一组输出数据线(douta)、一组地址线(addra),一个使能端(ena)。只能进行读操作,且一个时钟只能读出某个地址上的一组数据。
双口ROM有两个时钟(clka&clkb)、两组数据数据线(douta&doutb)、两组地址线(addra&addrb)、两个使能端口(ena&enb)。也是只能进行读操作,且每个端口中,一个时钟只能读出某个地址上的一组数据,其实和单端口ROM没什么区别,其实可以当成是两个单口ROM拼接而成,只是存储的数据是共享的。