使用 vhdl 或其他语言定义框图

使用 vhdl 或其他语言定义框图

是否可以在 LaTeX 代码中使用 vhdl 来获取框图?

    \package{vhdltoblockdiagram}
% ...
    \begin{vhdl}
% entity Comp is generic ( n : natural := 2 );
% port (
%    A       : in std_logic_vector(n-1 downto 0);
%    B       : in std_logic_vector(n-1 downto 0);
%    greater : out std_logic;
%    less    : out std_logic;
%--bottom--
%    equal   : out std_logic;
%);
%end Comp;
    \end{vhdl}

结果如下: http://vhdltolatex.mamikon.net/

如何在不说明元素位置的情况下定义框图?我想要一个自动布局。

答案1

我不知道 vhdl,因此我不确定这是否能回答你的问题。

如果由于节点前后元素较多/较少而想改变图表item,则只需从左/右矩阵中添加/删除元素,更改划分的因子\myheight并调整\foreach条件。

\documentclass[a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{matrix, positioning, arrows.meta}
\newlength{\myheight}
\setlength{\myheight}{2.5cm}
\tikzset{labels/.style={font=\sffamily\scriptsize},
    circuit/.style={draw,minimum width=2cm,minimum height=\myheight,very thick,inner sep=1mm,outer sep=0pt,cap=round,font=\sffamily\bfseries},
    triangle 45/.tip={Triangle[angle=45:8pt]}
}

\begin{document}
    \begin{figure}[htb]
        \centering
        \begin{tikzpicture}[font=\sffamily,>=triangle 45]
        \node [circuit] (item) {Comp};
        \matrix[
            matrix of nodes, 
            left= of item, 
            row sep=\myheight/5,
            nodes={anchor=east}
            ] (rightmatr) { 
            A\\
            B\\
        };
        \matrix[
            matrix of nodes, 
            right= of item, 
            row sep=\myheight/6,
            nodes={anchor=west}
            ] (leftmatr) { 
            greater\\
            less\\
            equal\\
        };
        \foreach \i in {1,2}
            \draw [->] (rightmatr-\i-1) -- (rightmatr-\i-1 -| item.west);
        \foreach \i in {1,2,3}
            \draw [<-] (leftmatr-\i-1) -- (leftmatr-\i-1 -| item.east);
        \end{tikzpicture}
        \caption{Entity of Comp}
    \end{figure}
\end{document}

在此处输入图片描述

相关内容