FPGA简单全加器设计
全加器就是有进位的加法器,这里我设计的是一位全加器,我们先构想出来这个全加器是有两个输入端,然后有一个低位的进位和一个高位的进位,查阅数电课本还有一个本位的输出端,我们先根据这些端口来写出这个一位全加器的真值表,这里我就不写了,从这个真值表我们就得出了一位全加器的两个输出端的逻辑方程,然后卡诺图化简一下
化简了逻辑方程,我们也明确了我们所要实现的功能,每一个端口怎么用,我们就可以开始写代码了
我们先用化简的逻辑方程写一个
module verilog2
//-----------------define-------------------//
(input wire ip_A,input wire ip_B,input wire ip_C1,output wire op_S,output wire op_C0
);
//-----------------function--------------------------------//assign op_S = ip_A ^ ip_B ^ ip_C1;assign op_C0 = ip_A & ip_B + (ip_A ^ ip_B) & ip_C1;
endmodule
我实在上一个半加器的文件基础上新建的一个verilog文件,这里我刚开始的时候写了和之前半加器一样的模块名字,但是就出现问题了系统提示
Error (10228): Verilog HDL error at Verilog2.v(1): module "adder" cannot be declared more than once
这就说明同一个文件里不能用同一个模块名,这个应该是常识不能使用同样的名字,但是我这里就没注意,我就看到旁白出现了我新建的verilog文件的名字,但是我记得我没有命名,这里就自己给我生成一个新的名字了
把代码块更改了名字以后再试试发现出来的图像还是原来做半加器的图像,我发现是我没有将新的文件设置为顶层文件我我就设置了一下
设置好了接下来仿真编译一下,但是还是出现问题了
Error (12007): Top-level design entity "Verilog2" is undefined,显示这个文件没有定义,我就纳闷了怎么在文件里面定义呢,然后我检查了我的模块名字居然开头的字母不是大写的,修改回来以后编译真就没事了
仿真出来门级电路就是这样的了,接下来我想对代码进行一些探究,因为代码里写了两个assign我觉得有点麻烦可以用一个吗,没想到把分号改成逗号之后可以将语句连接起来了,这个用法我不清楚课本在哪有记载了,显然我是不记得的,现在这样自己弄了一次就清楚很多了,以后能省我不少事
module Verilog2
//-----------------define-------------------//
(input wire ip_A,input wire ip_B,input wire ip_C1,output wire op_S,output wire op_C0
);
//-----------------function--------------------------------//assign op_S = ip_A ^ ip_B ^ ip_C1,op_C0 = ip_A & ip_B + (ip_A ^ ip_B) & ip_C1;
endmodule
这个代码太短了没什么好玩的了,我喜欢代码排列整齐的样子,接下来我再用没化简的写一次
module Verilog2
//-----------------define-------------------//
(input wire ip_A,input wire ip_B,input wire ip_C1,output wire op_S,output wire op_C0
);
//-----------------function--------------------------------//assign op_S = ((~ip_A) & (~ip_B) & ip_C1) | ((~ip_A) & ip_B & (~ip_C1)) | (ip_A & ip_B & ip_C1),op_C0 = (ip_A & ip_B) | (ip_A & (~ip_B) & ip_C1) | ((~ip_A) & ip_B & ip_C1);
endmodule
查看仿真的门级电路图
发现和原来的不太一样,没事了,我也不管了
FPGA简单全加器设计相关推荐
- (19)FPGA面试题设计前端流程
1.1 FPGA面试题设计前端流程 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题设计前端流程: 5)结束语. 1.1.2 本节引言 "不积跬步 ...
- FPGA RAM存储器设计
1.1 FPGA RAM存储器设计 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA RAM存储器设计: 5)结束语. 1.1.2 本节引言 "不积跬步 ...
- FPGA ROM存储器设计
1.1 FPGA ROM存储器设计 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4) FPGA ROM存储器设计: 5)结束语. 1.1.2 本节引言 "不积跬 ...
- FPGA异步复位设计代码
1.1 FPGA异步复位设计代码 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA异步复位设计代码: 5)结束语. 1.1.2 本节引言 "不积跬步,无 ...
- FPGA同步复位设计代码
1.1 FPGA同步复位设计代码 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA同步复位设计代码: 5)结束语. 1.1.2 本节引言 "不积跬步,无 ...
- FPGA RTL级设计原则
1.1 FPGA RTL级设计原则 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA RTL级设计原则: 5)结束语. 1.1.2 本节引言 "不积跬步 ...
- FPGA时序约束设计经验总结
1.1 FPGA时序约束设计经验总结 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA时序约束设计经验总结: 5)结束语. 1.1.2 本节引言 "不积 ...
- FPGA基本开发设计流程
FPGA基本开发设计流程,九个步骤搞定 http://mini.eastday.com/bdmip/190809020717157.html FPGA的设计流程就是利用EDA开发软件和编程工具对FPG ...
- 新书预告:Xilix FPGA数字信号处理设计——基础版
掌握FPGA数字信号处理设计需满足三个条件:熟悉FPGA设计方法.理解数字信号处理理论.掌握理论的工程实现方法.对初学者来讲,每个条件看似都难以逾越.杜勇老师完美融合课程教学与工程设计的需求特点,以独 ...
最新文章
- 汽车电池包-云100
- Jquery性能优化(转自蓝色理想)
- java 归并排序 非递归_归并排序-递归及非递归的JAVA实现
- php为什么获取不到id,微信小程序无法获取到unionId怎么办
- Bootstrap3 工具提示插件的使用方法
- 三星在美国开售低价版5G手机 吸引价格敏感消费者
- PHPExcel用法有感
- Mac 终端 显示隐藏文件
- 23.3. 操作系统监控需求
- linux安装步骤_图解 Debian 10(Buster)安装步骤 | Linux 中国
- 使用 GalleryView 1.1制作相册说明
- 博客之星:我去,你竟然还不会用 synchronized
- 第1章 机器学习基础
- 171003 逆向-Reversing.kr(CSHOP)
- L2正则化(L2 Regularization)
- 树莓派显示到笔记本屏幕上
- java modbus 规约_Modbus RTU的规约详细资料详解
- python 中文编码_python:汉字编码
- 【数据结构】测试3 栈和队列
- oracle固定资产类别改不了,用友u8系统固定资产卡片类别写错了是不是改不了?...
热门文章
- 饱和蒸汽比容计算、 温压补偿系数计算
- 面部识别预处理全家桶:mtcnn人脸捕捉、人脸点对齐、仿射运算
- [Swift]LeetCode1031. 两个非重叠子数组的最大和 | Maximum Sum of Two Non-Overlapping Subarrays...
- java解析axure原型rp文件,Axure RP 8 教程 – 查看原型
- C++ new 动态内存 对象初始化
- 20221221英语学习
- 面向对象学习笔记——封装、继承、多态
- java 字符串掐头去尾_Java 8 Stream 简单介绍
- 阿里云Oss云存储的使用
- Elasticsearch:创建 Ingest pipeline