verilog描述表决器的两种方式简易分析
命题:设计一个三变量表决器。真值表如下:
可以写出并简化得出公式:F=AB+BC+AC。
以下是两种算法:
第一种:仅从算法方面描述为:A、B、C的和大于1则输出结果为1,否则为0;源码如下:
module vote_c(a,b,c,result);
input a,b,c;
output result;
reg result;
always @(a or b or c or result)
begin
if((a+b+c)>)
result=;
else
result=;
$display("a,b,c,result");
$display("%d,%d,%d,%d",a,b,c,result);
end
endmodule
第二种:采用上面公式描述的组合逻辑。源码如下:
module vote_d(a,b,c,result);
input a,b,c;
output result; assign result=((a&&b)||(b&c)||(a&&c));
always@(a or b or c or result)
begin
$display("a b c result");
$display("%d %d %d %d",a,b,c,result);
end
endmodule
测试平台 modelsim altera 6.5b,测试源码如下:
`timescale 1us/1us
`include "votec.v"
`include"voted.v" module vote_top;
reg a,b,c;
wire result; initial
begin
a=;b=;c=;
# a=;b=;c=;
# a=;b=;c=;
# a=;b=;c=;
# a=;b=;c=;
# a=;b=;c=;
# a=;b=;c=;
# a=;b=;c=;
end
vote_c v1(a,b,c,result);
//vote_d v2(a,b,c,result);
endmodule
得出结果都为:
# a b c result
# 0 0 0 0
# a b c result
# 0 0 1 0
# a b c result
# 0 1 0 0
# a b c result
# 0 1 1 1
# a b c result
# 1 0 0 0
# a b c result
# 1 0 1 1
# a b c result
# 1 1 0 1
# a b c result
# 1 1 1 1
与真值表一致。所以两种方式都是正确的。在quartus II中综合编译后:
第一种的RTL视图如下:
可以看出,该模块综合成两个加法器和一个比较器。
第二种RTL视图如下:
可以看出综合成3个与门和一个或门的组合逻辑电路。
两者在资源消耗方面如下:
可以看出基本没有区别。仿真器应该最后将他们优化成一致了。
verilog描述表决器的两种方式简易分析的更多相关文章
- Android实战简易教程-第四十九枪(两种方式实现网络图片异步加载)
加载图片属于比较耗时的工作,我们需要异步进行加载,异步加载有两种方式:1.通过AsyncTask类进行:2.通过Handler来实现,下面我们就来看一下如何通过这两种方式实现网络图片的异步加载. 一. ...
- CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking)
CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking) 我在(Modern OpenGL用Shader拾取 ...
- System.Web.Http.Cors配置跨域访问的两种方式
System.Web.Http.Cors配置跨域访问的两种方式 使用System.Web.Http.Cors配置跨域访问,众多大神已经发布了很多文章,我就不在详细描述了,作为小白我只说一下自己的使用心 ...
- ImageView设置边框的两种方式
转载:http://www.2cto.com/kf/201308/239945.html package cc.testimageviewbounds; import android.os.Bundl ...
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
- Hadoop之HDFS文件操作常有两种方式(转载)
摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件 命令行 Java API HD ...
- 简介C#读取XML的两种方式
简介C#读取XML的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-03-03 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的 ...
- 加载xib文件的两种方式
一.加载xib文件的两种方式 1.方法一(NewsCell是xib文件的名称) NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@&quo ...
- 内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式.
内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式. 一丶IDT解析. 我们知道.IDT表中存放着各种中断信息.比如当我们调用int 3的时候,则会调用IDT表中的第三项来进行调用. 而函数 ...
随机推荐
- 【LintCode】链表求和
问题分析: 我们通过遍历两个链表拿到每个位的值,两个值加上前一位进位值(0或者1)模10就是该位的值,除以10就是向高位的进位值(0或者1). 由于两个链表可以不一样长,所以要及时判断,一旦为null ...
- 【LintCode】计算两个数的交集(一)
问题分析: 既然返回值没有重复,我们不妨将结果放进set中,然后对两个set进行比较. 问题求解: public class Solution { /** * @param nums1 an inte ...
- 3.Android 优化布局(解决TextView布局)
转载:http://www.jianshu.com/p/d3027acf475a 今天分享一个Layout布局中的一个小技巧,希望看过之后你也可以写出性能更好的布局,我个人的目的是用最少的view写出 ...
- js-JavaScript高级程序设计学习笔记16
第20章 JSON JOSN,JavaScript对象表示法,是JS的一个严格的子集,但是它是一种数据格式,虽然与JS具有相同的语法形式,但是不从属于JS. 1.语法 ①可表示简单值--字符串.数值. ...
- 【codevs1086】 栈
http://codevs.cn/problem/1086/ (题目链接) 题意 给出1~n总共n个数,对它们进行入栈出栈操作,问一共有多少种不同的方案. Solution 找规律手玩前5个1 2 5 ...
- codeforces 723B:Text Document Analysis
Description Modern text editors usually show some information regarding the document being edited. F ...
- Android成长日记-Fragment的生命周期与Activity通信
1. public void onAttach(Activity activity) 当Fragment被添加到Activity时候会回调这个方法,并且这个方法只会被回调一次 2. public vo ...
- 12.04 redmine
sudo apt-get redmine-mysql mysql-server-5.5 sudo apt-get redmine-mysql redmine(中间会死一段时间,没关系,等会会过去) 安 ...
- PHP守护进程
php也是可以直接进行守护进程的启动与终止的,相对于shell来说会简单很多,理解更方便,当然了php的守护进程要实现自动重启还是要依赖于shell的crontab日程表,每隔一段时间去执行一次脚本看 ...
- AngularJs form.FormController、ngModel.NgModelController
form.FormController FormController跟踪所有他所控制的和嵌套表单以及他们的状态,就像有效/无效或者脏值/原始. 每个表单指令创建一个FormController实例. ...