一位全加器的设计与实践

目录

  • 认识全加器
    • 半加器
    • 一位全加器
  • 输出原理图实现一位加法器
    • 创建工程
    • 半加器原理图输入
    • 全加器原理图输入
  • Verilog实现一位加法器
  • 下载测试
  • 总结
  • 参考文章

认识全加器

半加器

半加器是能够对两个一位的二进制数进行相加得到半加和以及半加进位的组合电路,其真值表如下
一位全加器的设计与实践_第1张图片
也就是说,这个半加器的输出表达式为S=A⊕B,C=AB,逻辑电路图如下
一位全加器的设计与实践_第2张图片

一位全加器

全加器的真值表如下,其中Ain表示被加数,Bin表示加数,Cin表示低位进位,Cout表示高位进位,Sum表示本位和
一位全加器的设计与实践_第3张图片
即输出表达式为
Sum=Ain⊕Bin⊕Cin
Cout=(Ain⊕Bin)⋅Cin+Ain·Bin=(Ain&Bin)∣(Bin&Cin)∣(Ain&Cin)
一位全加器的设计与实践_第4张图片

输出原理图实现一位加法器

创建工程

首先启动quartus软件,选择file,找到new project wizard,在填写工程的路径和名称之后的地方都直接下一步,知道出现以family为标题开头的地方。
一位全加器的设计与实践_第5张图片
一位全加器的设计与实践_第6张图片
一位全加器的设计与实践_第7张图片
EP4CE115F29C7芯片

半加器原理图输入

首先选择file,选择new,进入选择Block Diagram/Schematic File
一位全加器的设计与实践_第8张图片

一位全加器的设计与实践_第9张图片

选择元件,添加一个and2,一个xor,两个input,两个output,组成如下图的电路

一位全加器的设计与实践_第10张图片

一位全加器的设计与实践_第11张图片
保存文件,并编译

一位全加器的设计与实践_第12张图片
通过Tools->Netlist Viewers->RTL Viewer查看电路图
一位全加器的设计与实践_第13张图片
得到如图,便是成功

一位全加器的设计与实践_第14张图片
创建一个向量波形文件,选择菜单项File->New->University Program VWF
一位全加器的设计与实践_第15张图片

按照如下图所示操作,我这里截图尽量详细一点
一位全加器的设计与实践_第16张图片
一位全加器的设计与实践_第17张图片
一位全加器的设计与实践_第18张图片
一位全加器的设计与实践_第19张图片
编辑并保存
一位全加器的设计与实践_第20张图片
功能仿真结果
一位全加器的设计与实践_第21张图片
时序仿真结果
一位全加器的设计与实践_第22张图片
通过仿真可以看见结果是吻合的

全加器原理图输入

将设计项目设置为可调用的元件
在打开半加器原理图文件half_adder.bdf的情况下,选择菜中File中的Create/Update→CreateSymbolFilesforCurrentFile项,即可将当前文件h_adder.bdf变成一个元件符号存盘,以待在高层次设计中调用,当然这里有点尴尬的地方是我刚刚不小心把半加器命名成的all_adder,这里如果影响了观感求谅解。
一位全加器的设计与实践_第23张图片
接下来我们再绘制一个,还是老样子,选择file->new,选择Block Diagram/Schematic File
一位全加器的设计与实践_第24张图片
加入元件
一位全加器的设计与实践_第25张图片
做成如图所示
一位全加器的设计与实践_第26张图片

这里先把这个文件置顶
一位全加器的设计与实践_第27张图片

这里是如上相同的方式,保存编译查看电路图,仿真实现
一位全加器的设计与实践_第28张图片
一位全加器的设计与实践_第29张图片
功能仿真
一位全加器的设计与实践_第30张图片
时序仿真
一位全加器的设计与实践_第31张图片

Verilog实现一位加法器

创建Verilog文件,还是file,new
一位全加器的设计与实践_第32张图片
输入代码

module Verilog1(//这里的名字与自己的文件名相同
	//输入信号,ain表示被加数,bin表示加数,cin表示低位向高位的进位
	input ain,bin,cin,
	//输出信号,cout表示向高位的进位,sum表示本位的相加和
	output reg cout,sum

);
reg s1,s2,s3;
always @(ain or bin or cin) begin
	sum=(ain^bin)^cin;//本位和输出表达式
	s1=ain&cin;
	s2=bin&cin;
	s3=ain&bin;
	cout=(s1|s2)|s3;//高位进位输出表达式
end
endmodule

还是打开这个界面,显示这样就是成功编译
一位全加器的设计与实践_第33张图片
还是创建波形图文件,这里不多赘述了,依然是编辑成如下图的样式,编译运行
一位全加器的设计与实践_第34张图片
功能仿真
一位全加器的设计与实践_第35张图片
时序仿真
一位全加器的设计与实践_第36张图片
成功~

下载测试

芯片引脚配置表
一位全加器的设计与实践_第37张图片
找到quartus的pin planner

打开,设置引脚
一位全加器的设计与实践_第38张图片

接下来电脑接入FPGA开发板。
如果是原理图进行实现的话,绘制的原理图会出现以下变化,输入输出旁边会标注刚刚绑定的引脚编号。
一位全加器的设计与实践_第39张图片
此处要需要自己重新编译一遍
然后如下图操作
一位全加器的设计与实践_第40张图片
选择好下图中的移动接口,没有这个接口要到在设备管理器中找到加感叹号的USB-blaster设备,并在一下路径下18.1/quatus/drivers/USB-blaster添加驱动。
一位全加器的设计与实践_第41张图片
回到上一级菜单,选中以下2框选处,点击start开始烧录。若4处出现success表示烧录成功。
一位全加器的设计与实践_第42张图片
烧录结果

这就是成功!

总结

实验到这里已经非常顺利了,接下来我们还有四位全加器的实验,也很有意思,拜了个拜~

参考文章

https://blog.csdn.net/qq_43279579/article/details/115480406

你可能感兴趣的:(linux,开发语言,嵌入式硬件,fpga开发)