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表中的第三项来进行调用. 而函数 ...
随机推荐
- 【BZOJ-1336&1337】Alie最小圆覆盖 最小圆覆盖(随机增量法)
1336: [Balkan2002]Alien最小圆覆盖 Time Limit: 1 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 1573 ...
- 【BZOJ-3910】火车 倍增LCA + 并查集
3910: 火车 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 262 Solved: 90[Submit][Status][Discuss] De ...
- Jenkins 2.x新建节点配置(Windows)
2.0版本以上默认加入了权限插件,所以在进入主界面时是需要登录的. 一.主界面->[系统管理]->[管理节点]->[新建节点],进行节点的添加: 二.输入节点名称,已经选择[Perm ...
- Java过滤器与SpringMVC拦截器之间的关系与区别
今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深 ...
- Appium运行时,error: Logcat capture failed: spawn ENOENT的解决办法
目前发现有以下两种可能: 一:查看环境变量是否配置成功. ANDROIDSDK D:\my_2_softwares\JAVA\adt-bundle-windows-x86-20140702\sdkPA ...
- PMD使用提醒
1.注册登录后进入主界面,向右滑动出现侧滑栏 2.点击蓄水球进行每日目标设定 3.设置计时失败发送朋友圈内容 ~~~~~开始体验吧!!!
- CentOS设置默认启动命令行(不启动图形界面)
Linux 启动的时候可以选择纯文本或者是窗口环境,这就牵涉了运行等级这个问题.Linux 默认提供了 7 个 Run level 给我们使用,其中我们最常用的就是 run level3 和run l ...
- XmlHttpRequest对象的获取及相关操作
一.获取XMLHttpRequest对象 方案一: function ajaxFunction(){ var xmlHttp; try{ // Firefox, Opera 8.0+, Safari ...
- 获取List集合中最大值的方法
public static void main(String args[]) { //Double[] num = { 45.1,45.2 }; Li ...
- css013 构建基于浮动的布局
css013 构建基于浮动的布局 基于浮动的布局时利用float属性是网页上的元素并排,并创建列 float有三个值:left .right .none 1.假设要把一张图片浮动到网页的左侧 .flo ...