我正在尝试在VHDL中构建4x4乘法器的顶级组件,但在理解一些内容时遇到了一些麻烦。
我正在尝试编写VHDL代码以表示下面的以下组件:
Circuit figure for the implementation of VHDL Code
我已经为其编写了以下VHDL代码,但希望有人可以看一下并给我他们的反馈:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY multiplier IS
PORT(
cin : IN STD_LOGIC;
cout: OUT STD_LOGIC;
SUM : OUT STD_LOGIC;
mk1 : IN STD_LOGIC;
mk : IN STD_LOGIC;
q0 : IN STD_LOGIC;
q1 : IN STD_LOGIC);
END multiplier;
ARCHITECTURE function OF multiplier IS
BEGIN
cout <= (((q0 AND mk1) AND (q1 AND mk)) OR ((q0 AND mk1) AND cin) OR ((q1 AND mk) AND cin));
sum <= ((q0 AND mk1) XOR (q1 AND mk) XOR cin);
END function;
这使我想到了最后一个问题,即仿真波形,我该如何确认电路的功能?
提前谢谢您
您链接的图片以及您编写的代码都不适合4x4乘法器(4x4具有两个4位输入,而它具有两个2位输入),但我想它是更大的一部分系统。如果不是这样,那么本研究论文将稍微讨论一下4x4乘法器的体系结构:https://www.researchgate.net/publication/321382885_A_Novel_Heterogeneous_Approximate_Multiplier_for_Low_Power_and_High_Performance/figures?lo=1
在我看来,您提供的图片也希望您将q0,q1和mk也作为输出。因此,请确保再创建3个由这些输入驱动的输出端口。除此之外,您完整的加法器逻辑是正确的,并且您编写的代码与您提供的图片是准确的。关于仿真,首先您需要编写一个测试平台。这是一个很好的教程:https://allaboutfpga.com/vhdl-testbench-tutorial/
最后,您将需要运行此测试平台。这取决于您使用的是哪个仿真套件(Vivado,ModelSim等),但是其中大多数只是将代码设置为顶层,然后单击运行按钮。
希望有所帮助。