FPGA(3)--VHDL及原理图--4位全加器

简介: FPGA(3)--VHDL及原理图--4位全加器

文章目录


一、实验目的

二、实验内容

三、实验设计

五、实验思考与总结


一、实验目的


掌握例化语句的使用方法,掌握使用程序文本和原理图结合方法设计电路,掌握利用包含算术操作符的重载函数的使用。


二、实验内容


首先用VHDL语言设计1位全加器,仿真验证其正确性,并将其封装成一个元件;设计串行4位加法器的电路,调用1位全加器设计4位加法器的原理图。通过编译、仿真验证功能正确性。

直接通过调用算术操作符的重载函数,利用VHDL语言设计4位全加器。通过编译、仿真验证功能正确性。

前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看。(点击跳转人工智能学习资料)


三、实验设计


1.在上一个实验中已经用VHDL语言设计1位全加器,且仿真验证其正确性。如下即为1位全加器的VHDL描述。其原理在上一个实验已经说明,这里不再赘述。(可见上一篇)

Library Ieee; --全加器顶层设计描述
Use Ieee.Std_Logic_1164.All;
Entity f_adder is
  Port (ain,bin,cin : in Std_Logic;
     sum,cout : out Std_Logic);
End Entity f_adder;
Architecture Bhv of f_adder is
  component h_adder --调用半加器声明
  port (a,b : in Std_Logic; co,so : out Std_Logic);
  End component h_adder;
  signal so1,co1,co2 : Std_Logic; --定义三个信号变量作为内部的连接线
  begin
  u1: h_adder Port Map (a=>ain,b=>bin,so=>so1,co=>co1); --例化语句
  u2: h_adder Port Map (a=>so1,b=>cin,so=>sum,co=>co2);
  cout <= co1 or co2;
End Architecture Bhv;


2.将其封装成一个元件。

①file→New,选block diagram/schematic创建原理图文件,保存一下。

②回到1位全加器VHDL描述页面,选file→create/update→create symbol files for current file,把编写的代码封装成一个元件。

③回到创建的原理图文件,按工具条上的symbol tool,再按project,就可以看见该封装元件了。


2021071420241949.png


3.调用1位全加器元件设计4位加法器的原理图。如图即为设计的电路图。


20210714202439274.png


ain、bin和cin为输入信号,其中cin为前一位给的进位信号。sum为求和结果输出,而cout为进位输出。1、2、3则为由低到高的四位。


4. 直接通过调用算术操作符的重载函数,利用VHDL语言设计4位全加器。代码如下图。data的最高位则作为进位信号。

Library Ieee;
Use Ieee.Std_Logic_1164.All;
Use Ieee.Std_Logic_Unsigned.All;
Entity adder4b is
  port(a,b : in Std_Logic_Vector(3 downto 0);
   cin : in Std_Logic;
   cout: out Std_Logic;
   dout: out Std_Logic_Vector(3 downto 0));
End Entity adder4b;
Architecture bhv of adder4b is
  signal data: Std_Logic_Vector(4 downto 0);
  begin
  data <= ('0'&a)+('0'&b)+("0000"&cin);
  cout <= data(4);
  dout <= data(3 downto 0);
End Architecture bhv;


四、实验结果及仿真


1.对于“调用1位全加器设计4位加法器的原理图”的仿真:输入分别设定最低位无进位信号下的0+0、1+4、6+5和9+8情况以及最低位由进位信号下的0+0、1+4、6+5和9+8情况进行仿真验证正确性。结果如下,观察可知符合所预测的结果,即正确。


20210714202715447.png


2.对于“直接通过调用算术操作符的重载函数,利用VHDL语言设计4位全加器”的仿真:输入分别设定最低位无进位信号下的0+0、1+4、6+5和9+8情况以及最低位由进位信号下的0+0、1+4、6+5和9+8情况进行仿真验证正确性。结果如下,观察可知符合所预测的结果,即正确。


2021071420273481.png


五、实验思考与总结


原理图设计优势:直观明了;设计者不必具备诸如硬件描述语言等知识就能迅速入门,完成电路系统设计;能进行多层次的数字系统设计;能对系统中的任一层次或任一元件的功能进行精确的时序仿真与分析;能对设计方案随时进行更改,并储存设计过程中所有的电路和测试文件入档。


运算符重载函数指两个或两个以上的函数具有相同的函数名,而操作数的数据类型有差别,足以区分实际想要的函数。由编译器根据操作数的数据类型来判断用哪一函数。运算符重载使得运算符(或函数)能对多种数据类型进行操作,扩展了VHDL的功能。

相关文章
|
异构计算
FPGA(2)--例化语句--1位全加器
FPGA(2)--例化语句--1位全加器
207 0
FPGA(2)--例化语句--1位全加器
|
算法
FPGA-阵列乘法器的设计(利用全加器 基于CRA阵列乘法器)
FPGA-阵列乘法器的设计(利用全加器 基于CRA阵列乘法器)
277 0
FPGA-阵列乘法器的设计(利用全加器 基于CRA阵列乘法器)
FPGA-基本知识 设计一个一位(四位)半加器和一位(四位)全加器
FPGA-基本知识 设计一个一位(四位)半加器和一位(四位)全加器
573 0
FPGA-基本知识 设计一个一位(四位)半加器和一位(四位)全加器
|
关系型数据库 项目管理 异构计算
FPGA设计超前进位与8421-BCD码全加器
本文介绍了FPGA设计超前进位与8421-BCD码全加器
621 0
FPGA设计超前进位与8421-BCD码全加器
|
异构计算
FPGA设计16位二进制全加器模块
本文主要采用FPGA设计16位二进制全加器模块
1066 0
FPGA设计16位二进制全加器模块
|
异构计算
【嵌入式开发】FPGA/CPLD控制串口(VHDL版)
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 采用自顶向下设计: top_rs232_port.vhd library ieee; use ieee.
778 0
|
8天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的16QAM调制+软解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本项目基于FPGA实现了16QAM基带通信系统,包括调制、信道仿真、解调及误码率统计模块。通过Vivado2019.2仿真,设置不同SNR(如8dB、12dB),验证了软解调相较于传统16QAM系统的优越性,误码率显著降低。系统采用Verilog语言编写,详细介绍了16QAM软解调的原理及实现步骤,适用于高性能数据传输场景。
105 69
|
12天前
|
移动开发 算法 数据安全/隐私保护
基于FPGA的QPSK调制+软解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的QPSK调制解调系统,通过Vivado 2019.2进行仿真,展示了在不同信噪比(SNR=1dB, 5dB, 10dB)下的仿真效果。与普通QPSK系统相比,该系统的软解调技术显著降低了误码率。文章还详细阐述了QPSK调制的基本原理、信号采样、判决、解调及软解调的实现过程,并提供了Verilog核心程序代码。
49 26
|
18天前
|
算法 异构计算
基于FPGA的4ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的4-ASK调制解调系统的算法仿真效果、理论基础及Verilog核心程序。仿真在Vivado2019.2环境下进行,分别测试了SNR为20dB、15dB、10dB时的性能。理论部分概述了4-ASK的工作原理,包括调制、解调过程及其数学模型。Verilog代码实现了4-ASK调制器、加性高斯白噪声(AWGN)信道模拟、解调器及误码率计算模块。
41 8

热门文章

最新文章