⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 一个可以综合的verilog 写的fifo存储器.mht

📁 一个可以综合的Verilog 写的FIFO存储器 内附文档说明
💻 MHT
📖 第 1 页 / 共 5 页
字号:
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=
(<span
class=3DSpellE>fcounter</span> =3D=3D (`FDEPTH-3) &amp;&amp; <span class=3D=
SpellE>WriteN</span>=3D=3D1'b0 &amp;&amp; <span
class=3DSpellE>ReadN</span>=3D=3D1'b1))<o:p></o:p></span></pre><pre><span l=
ang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><=
span
class=3DSpellE>F_SLastN</span> &lt;=3D 1'b0;<o:p></o:p></span></pre><pre><s=
pan
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>else</span> if(<span class=3DSpellE>F_SLastN</span>=3D=3D1'b0=
 &amp;&amp; (<span
class=3DSpellE>ReadN</span> ^ <span class=3DSpellE>WriteN</span>) )<o:p></o=
:p></span></pre><pre><span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=
<span
class=3DSpellE>F_SLastN</span> &lt;=3D 1'b1;<o:p></o:p></span></pre><pre><s=
pan
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>end</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><sp=
an style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp; </span><span
class=3DGramE>else</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><s=
pan style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DSpellE>F_SLastN</span> &lt;=3D 1'b1;<o:p></o:p></span></pre><pre><s=
pan
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; </span><span
class=3DGramE>end</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><sp=
an style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>end</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><sp=
an style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span>// <span
class=3DSpellE>F_LastN</span> indicates that there is one space for only on=
e data<o:p></o:p></span></pre><pre><span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span>// =
word in the FIFO.<o:p></o:p></span></pre><pre><span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><sp=
an
class=3DGramE>always</span> @(<span class=3DSpellE>posedge</span> <span
class=3DSpellE>Clk</span> or <span class=3DSpellE>negedge</span> <span
class=3DSpellE>RstN</span>)<o:p></o:p></span></pre><pre><span lang=3DEN-US>=
<span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>begin</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><=
span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span=
><span
class=3DGramE>if(</span>!<span class=3DSpellE>RstN</span>)<o:p></o:p></span=
></pre><pre><span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DSpellE>F_LastN</span> &lt;=3D 1'b1;<o:p></o:p></span></pre><pre><sp=
an
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; </span><span
class=3DGramE>else</span> begin<o:p></o:p></span></pre><pre><span lang=3DEN=
-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp; </span><span
class=3DGramE>if(</span><span class=3DSpellE>FClrN</span>=3D=3D1'b1) begin<=
o:p></o:p></span></pre><pre><span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>if</span> ((<span class=3DSpellE>F_FullN</span>=3D=3D1'b0 &am=
p;&amp; <span
class=3DSpellE>ReadN</span>=3D=3D1'b0)<span style=3D'mso-spacerun:yes'>&nbs=
p; </span>||<o:p></o:p></span></pre><pre><span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=
(<span
class=3DSpellE>fcounter</span> =3D=3D (`FDEPTH-2) &amp;&amp; <span class=3D=
SpellE>WriteN</span>=3D=3D1'b0 &amp;&amp; <span
class=3DSpellE>ReadN</span>=3D=3D1'b1))<o:p></o:p></span></pre><pre><span l=
ang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><=
span
class=3DSpellE>F_LastN</span> &lt;=3D 1'b0;<o:p></o:p></span></pre><pre><sp=
an
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>else</span> if(<span class=3DSpellE>F_LastN</span>=3D=3D1'b0 =
&amp;&amp; (<span
class=3DSpellE>ReadN</span> ^ <span class=3DSpellE>WriteN</span>) )<o:p></o=
:p></span></pre><pre><span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=
<span
class=3DSpellE>F_LastN</span> &lt;=3D 1'b1;<o:p></o:p></span></pre><pre><sp=
an
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>end</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><sp=
an style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp; </span><span
class=3DGramE>else</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><s=
pan style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DSpellE>F_LastN</span> &lt;=3D 1'b1;<o:p></o:p></span></pre><pre><sp=
an
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; </span><span
class=3DGramE>end</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><sp=
an style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>end</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><sp=
an style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span>// <span
class=3DSpellE>F_FullN</span> indicates that the FIFO is full.<o:p></o:p></=
span></pre><pre><span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><sp=
an
class=3DGramE>always</span> @(<span class=3DSpellE>posedge</span> <span
class=3DSpellE>Clk</span> or <span class=3DSpellE>negedge</span> <span
class=3DSpellE>RstN</span>)<o:p></o:p></span></pre><pre><span lang=3DEN-US>=
<span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>begin</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><=
span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span=
><span
class=3DGramE>if(</span>!<span class=3DSpellE>RstN</span>)<o:p></o:p></span=
></pre><pre><span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DSpellE>F_FullN</span> &lt;=3D 1'b1;<o:p></o:p></span></pre><pre><sp=
an
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; </span><span
class=3DGramE>else</span> begin<o:p></o:p></span></pre><pre><span lang=3DEN=
-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>if(</span><span class=3DSpellE>FClrN</span>=3D=3D1'b1)<span s=
tyle=3D'mso-spacerun:yes'>&nbsp; </span>begin<o:p></o:p></span></pre><pre><=
span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>if</span> (<span class=3DSpellE>F_LastN</span>=3D=3D1'b0 &amp=
;&amp; <span
class=3DSpellE>WriteN</span>=3D=3D1'b0 &amp;&amp; <span class=3DSpellE>Read=
N</span>=3D=3D1'b1)<o:p></o:p></span></pre><pre><span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp; </span><span
class=3DSpellE>F_FullN</span> &lt;=3D 1'b0;<o:p></o:p></span></pre><pre><sp=
an
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>else</span> if(<span class=3DSpellE>F_FullN</span>=3D=3D1'b0 =
&amp;&amp; <span
class=3DSpellE>ReadN</span>=3D=3D1'b0)<o:p></o:p></span></pre><pre><span la=
ng=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp; </span><span
class=3DSpellE>F_FullN</span> &lt;=3D 1'b1;<o:p></o:p></span></pre><pre><sp=
an
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>end</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><sp=
an style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp; </span><span
class=3DGramE>else</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><s=
pan style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
class=3DSpellE>F_FullN</span> &lt;=3D 1'b1;<o:p></o:p></span></pre><pre><sp=
an
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp; </span><span
class=3DGramE>end</span><o:p></o:p></span></pre><pre><span lang=3DEN-US><sp=
an style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>end</span><o:p></o:p></span></pre><pre><span class=3DSpellE><=
span
class=3DGramE><span lang=3DEN-US>endmodule</span></span></span><span lang=
=3DEN-US><o:p></o:p></span></pre><pre><span
lang=3DEN-US>//////////////////////////////////////////////////////////////=
/////<o:p></o:p></span></pre><pre><span
lang=3DEN-US>//<o:p></o:p></span></pre><pre><span lang=3DEN-US>//<o:p></o:p=
></span></pre><pre><span
lang=3DEN-US>//<span style=3D'mso-spacerun:yes'>&nbsp;&nbsp; </span>Configu=
rable memory block for <span
class=3DSpellE><span class=3DGramE>fifo</span></span>. The width of the <sp=
an
class=3DSpellE>mem</span><o:p></o:p></span></pre><pre><span lang=3DEN-US>//=
<span style=3D'mso-spacerun:yes'>&nbsp;&nbsp; </span>block is configured vi=
a FWIDTH. All the data into <span
class=3DSpellE><span class=3DGramE>fifo</span></span> is done<o:p></o:p></s=
pan></pre><pre><span
lang=3DEN-US>//<span style=3D'mso-spacerun:yes'>&nbsp;&nbsp; </span>synchro=
nous to block.<o:p></o:p></span></pre><pre><span
lang=3DEN-US>//<o:p></o:p></span></pre><pre><span lang=3DEN-US>//<span styl=
e=3D'mso-spacerun:yes'>&nbsp;&nbsp; </span><span
class=3DGramE>Author :</span> <span class=3DSpellE>Venkata</span> <span
class=3DSpellE>Ramana</span> <span class=3DSpellE>Kalapatapu</span><o:p></o=
:p></span></pre><pre><span
lang=3DEN-US>//<o:p></o:p></span></pre><pre><span lang=3DEN-US>////////////=
///////////////////////////////////////////////////////<o:p></o:p></span></=
pre><pre><span
class=3DGramE><span lang=3DEN-US>module</span></span><span lang=3DEN-US> FI=
FO_MEM_BLK( <span
class=3DSpellE>clk</span>,<o:p></o:p></span></pre><pre><span lang=3DEN-US><=
span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p; </span><span
class=3DSpellE><span class=3DGramE>writeN</span></span>,<o:p></o:p></span><=
/pre><pre><span
lang=3DEN-US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp; </span><span
class=3DSpellE>wr_addr</span>,<o:p></o:p></span></pre><pre><span lang=3DEN-=
US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp; </span><span
class=3DSpellE>rd_addr</span>,<o:p></o:p></span></pre><pre><span lang=3DEN-=
US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp; </span><span
class=3DSpellE>data_in</span>,<o:p></o:p></span></pre><pre><span lang=3DEN-=
US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp; </span><span
class=3DSpellE>data_out</span><o:p></o:p></span></pre><pre><span lang=3DEN-=
US><span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </spa=
n>);<o:p></o:p></span></pre><pre><span
class=3DGramE><span lang=3DEN-US>input</span></span><span lang=3DEN-US><spa=
n style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span=
><span
class=3DSpellE>clk</span>;<span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp; </span>// input <span
class=3DSpellE>clk</span>.<o:p></o:p></span></pre><pre><span class=3DGramE>=
<span
lang=3DEN-US>input<span style=3D'mso-spacerun:yes'>&nbsp; </span><span
class=3DSpellE>writeN</span></span></span><span lang=3DEN-US>;<span style=
=3D'mso-spacerun:yes'>&nbsp; </span>// Write Signal to put data into <span
class=3DSpellE>fifo</span>.<o:p></o:p></span></pre><pre><span class=3DGramE=
><span
lang=3DEN-US>input<span style=3D'mso-spacerun:yes'>&nbsp; </span>[</span></=
span><span
lang=3DEN-US>(`FCWIDTH-1):0]<span style=3D'mso-spacerun:yes'>&nbsp; </span>=
<span
class=3DSpellE>wr_addr</span>;<span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;=
 </span>// Write Address.<o:p></o:p></span></pre><pre><span
class=3DGramE><span lang=3DEN-US>input<span style=3D'mso-spacerun:yes'>&nbs=
p; </span>[</span></span><span
lang=3DEN-US>(`FCWIDTH-1):0]<span style=3D'mso-spacerun:yes'>&nbsp; </span>=
<span
class=3DSpellE>rd_addr</span>;<span style=3D'mso-spacerun:yes'>&nbsp;&nbsp;=
 </span>// Read Address.<o:p></o:p></span></pre><pre><span
class=3DGramE><span lang=3DEN-US>input<span style=3D'mso-spacerun:yes'>&nbs=
p; </span>[</span></span><span
lang=3DEN-US>(`FWIDTH-1):0]<span style=3D'mso-spacerun:yes'>&nbsp;&nbsp; </=
span><span
class=

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -