日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tikz教程:一个异步FIFO设计步骤示意图的画法

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tikz教程:一个异步FIFO设计步骤示意图的画法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如上圖(圖片來源:異步FIFO),如何用Tikz來畫出這個圖形呢?

作圖思路: 使用流程圖的作圖方法可以很容易作出這幅圖形。使用node來畫出節點,并用node輸入圖中不帶框的文字。使用“->”工具來連線。連線時要用到節點的錨點坐標。

下面詳細介紹一下作圖步驟:

一、定義節點風格

定義兩種風格的節點:rec1設置為最小寬度1.4cm, 最小高度為1cm,畫出邊框,默認為長方形框,填充顏色為gray!10, 透明度為0.8。另一種rec2與rec1只有最小高度的區別。

\begin{tikzpicture}[rec1/.style={minimum width=1.4cm, minimum height=1cm,draw,fill=gray!10,opacity=0.8}, rec2/.style={minimum width=1.4cm, minimum height=2cm,draw,fill=gray!10,opacity=0.8},]

二、安排節點位置

圖中節點錯落有致,可以分為五列,有一定的對稱性。大致將五列安排在x=0,3,6,9,12x=0,3,6,9,12x=0,3,6,9,12的直線上。圖中上中下三行大致安排在y=6,3,0y=6,3,0y=6,3,0的直線上。

這樣,先用node安排好13個節點。

三、連線

高級技巧1: 如圖3,兩個紅色的節點之間由一條折線相連,我們不需要計算直角頂點的坐標,而是用|-來連接,這個路徑是由一個豎直線段再加一個水平線段組成的。

高級技巧2 坐標的計算,第二個紅點(右下方)的坐標是由節點(equalbelow.west)的左側錨點豎直向上平移0.2cm得到的。計算時,用$ 將數學表達式括起來:
($(equalbelow.west)+(0,0.2)$)

\draw [-latex](7.5,1.5)|-($(equalbelow.west)+(0,0.2)$);

連完線后,得到的成圖如下:

完整代碼:

\begin{tikzpicture}[font=\footnotesize,background rectangle/.style={fill=yellow!20},show background rectangle,pin distance=1.8cm, rec1/.style={minimum width=1.4cm, minimum height=1cm,draw,fill=gray!10,opacity=0.8}, rec2/.style={minimum width=1.4cm, minimum height=2cm,draw,fill=gray!10,opacity=0.8},xscale=1.2,yscale=1.2 ]\node [rec1] (rdbinptr) at (0,0) {$rd\_bin\_ptr$}; \node [rec1] (wrbinptr) at (0,6) {$wr\_bin\_ptr$};\node [rec1] (bin2graybelow) at (3,0) {bin2gray}; \node [rec1] (bin2grayabove) at (3,6) {bin2gray}; \node [rec2] (RAM) at (3,3) {RAM};\node [rec1] (doublesynffbelow) at (6,1.5) {$double\_syn\_ff$}; \node [rec1] (doublesynffabove) at (6,4.5) {$double\_syn\_ff$};\node [rec1] (equalbelow) at (9,0.2) {$==$}; \node [rec1] (gray2binbelow) at (9,1.5) {gray2bin}; \node [rec1] (gray2binabove) at (9,4.5) {gray2bin}; \node [rec1] (equalabove) at (9,5.8) {$==$};\node [rec1] (A-Bbelow) at (12,-1) {\begin{minipage}[]{1.5cm}A \par \qquad A-B \par B\end{minipage}};\node [rec1] (A-Babove) at (12,7) {\begin{minipage}[]{1.5cm}A \par \qquad A-B \par B\end{minipage}};\draw[dashed,gray](-2.5,3)--(14,3); \draw [-latex](-2,-0.25)--node[below]{rd\_empty}($(rdbinptr.west)+(0,-0.25)$); \draw [-latex](-2,0.25)--node[above]{rd\_en}($(rdbinptr.west)+(0,0.25)$);\node [below] at (-1.5,3) {讀時鐘域}; \node [above] at (-1.5,3) {寫時鐘域};\draw [-latex](-2,5.75)--node[below]{rd\_full}($(wrbinptr.west)+(0,-0.25)$); \draw [-latex](-2,6.25)--node[above]{rd\_en}($(wrbinptr.west)+(0,0.25)$);\draw [-latex](rdbinptr)--(bin2graybelow); \node [below]at(1.2,0){n:0}; \node [below]at(1.8,1.1){n-1:0};\draw [-latex](wrbinptr)--(bin2grayabove); \draw [-latex](1.5,3.3)--node[above]{wr\_data}($(RAM.west)+(0,0.3)$); \node [below]at(1.2,6){n:0}; \node [below]at(1.8,5.2){n-1:0};\draw [-latex](1.5,6)|-($(A-Babove.west)+(0,0.3)$); \draw [-latex](1.5,6)|-($(RAM.west)+(0,0.7)$); \node [above]at(2,3.7){wr\_addr};\draw [-latex](1.5,0)|-($(A-Bbelow.west)+(0,-0.3)$); \draw [-latex](1.5,0)|-($(RAM.west)+(0,-0.7)$); \draw [-latex]($(RAM.east)+(0,-0.5)$)--node[above]{rd\_data}(4.5,2.5); \node [below]at(2,2.3){rd\_addr};\draw [-latex](bin2graybelow.east)--($(equalbelow.west)+(0,-0.2)$); \draw [-latex](4.8,0)|-(doublesynffabove.west); \draw [-latex](bin2grayabove.east)--($(equalabove.west)+(0,0.2)$); \draw [-latex](4.5,6)|-(doublesynffbelow.west); \draw [-latex](doublesynffbelow)--(gray2binbelow.west); \draw [-latex](doublesynffabove)--(gray2binabove.west); \draw [-latex](7.5,1.5)|-($(equalbelow.west)+(0,0.2)$); \draw [-latex](7.5,4.5)|-($(equalabove.west)+(0,-0.2)$);\draw [-latex](gray2binbelow)--(10.5,1.5)|-($(A-Bbelow.west)+(0,0.3)$); \draw [-latex](gray2binabove)--(10.5,4.5)|-($(A-Babove.west)+(0,-0.3)$);\draw[-latex](equalbelow.east)--(13.5,0.2)node[above left]{rd\_empty}; \draw[-latex](equalabove.east)--(13.5,5.8)node[above left]{wr\_full}; \draw[-latex](A-Bbelow.east)--node[above]{rd\_cnt}++(0.8,0); \draw[-latex](A-Babove.east)--node[above]{wr\_cnt}++(0.8,0);\fill(1.5,6)circle(1pt)(1.5,0)circle(1pt); \fill(4.8,0)circle(1pt); \fill(4.5,6)circle(1pt); \fill(7.5,1.5)circle(1pt);\end{tikzpicture}

今天的介紹就到這里,喜歡的話歡迎點擊下方點贊、轉發、分享,謝謝啦!

【LaTeX微信交流加群:】

如果你希望交流LaTeX使用或者TikZ作圖或者Beamer制作幻燈片方面的問題,請先添加作者微信:niltxz,然后加入作者的LaTeX+TikZ+Beamer 交流微信群。

總結

以上是生活随笔為你收集整理的Tikz教程:一个异步FIFO设计步骤示意图的画法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。