Verilog数字系统设计——8位数字比较器

题目

  1. 试分别使用门级原语和always 语句设计8位数字比较器,如果输入A[7:0]小于等于输入B[7:0]则输出1,否则输出0,并写出测试代码进行测试。要求编制测试模块对实现的逻辑功能进行完整的测试;
  2. 使用门级原语设计时注意现在草稿上先做出该比较器的门级设计。
  3. 深入思考使用门级原语、连续赋值assign和always三种不同方法进行组合逻辑设计的异同,各自的优缺点。
  4. 实验提交Verilog设计文件(.v文件)和仿真波形截图,文件打包,压缩包以自己的学号+姓名命名;

代码

下面展示一些 内联代码片

门级:
module eight_compare3(out,a,b);
input [7:0] a,b;
output out;
//A take the oppositenot u_na0(na0,a[0]);not u_na1(na1,a[1]);not u_na2(na2,a[2]);not u_na3(na3,a[3]);not u_na4(na4,a[4]);not u_na5(na5,a[5]);not u_na6(na6,a[6]);not u_na7(na7,a[7]);
//B take the oppositenot u_nb0(nb0,b[0]);not u_nb1(nb1,b[1]);not u_nb2(nb2,b[2]);not u_nb3(nb3,b[3]);not u_nb4(nb4,b[4]);not u_nb5(nb5,b[5]);not u_nb6(nb6,b[6]);not u_nb7(nb7,b[7]);and and_a0nb0(a0nb0,a[0],nb0);//a0>b0and and_a1nb1(a1nb1,a[1],nb1);//a1>b1and and_a2nb2(a2nb2,a[2],nb2);//a2>b2and and_a3nb3(a3nb3,a[3],nb3);//a3>b3and and_a4nb4(a4nb4,a[4],nb4);//a4>b4and and_a5nb5(a5nb5,a[5],nb5);//a5>b5and and_a6nb6(a6nb6,a[6],nb6);//a6>b6and and_a7nb7(a7nb7,a[7],nb7);//a7>b7//na and nband una0nb0(na0nb0,nb0,na0);and una1nb1(na1nb1,nb1,na1);and una2nb2(na2nb2,nb2,na2);and una3nb3(na3nb3,nb3,na3);and una4nb4(na4nb4,nb4,na4);and una5nb5(na5nb5,nb5,na5);and una6nb6(na6nb6,nb6,na6);and una7nb7(na7nb7,nb7,na7);
//a and band ua0b0(a0b0,a[0],b[0]);and ua1b1(a1b1,a[1],b[1]);and ua2b2(a2b2,a[2],b[2]);and ua3b3(a3b3,a[3],b[3]);and ua4b4(a4b4,a[4],b[4]);and ua5b5(a5b5,a[5],b[5]);and ua6b6(a6b6,a[6],b[6]);and ua7b7(a7b7,a[7],b[7]);//a = bor or_a0b0(equal_a0b0,a0b0,na0nb0);//a0=b0or or_a1b1(equal_a1b1,a1b1,na1nb1);//a1=b1or or_a2b2(equal_a2b2,a2b2,na2nb2);//a2=b2      or or_a3b3(equal_a3b3,a3b3,na3nb3);//a3=b3or or_a4b4(equal_a4b4,a4b4,na4nb4);//a4=b4or or_a5b5(equal_a5b5,a5b5,na5nb5);//a5=b5or or_a6b6(equal_a6b6,a6b6,na6nb6);//a6=b6or or_a7b7(equal_a7b7,a7b7,na7nb7);//a7=b7and u1(second,equal_a7b7,a6nb6);and u2(third,equal_a7b7,equal_a6b6,a5nb5);and u3(four,equal_a7b7,equal_a6b6,equal_a5b5,a4nb4);and u4(five,equal_a7b7,equal_a6b6,equal_a5b5,equal_a4b4,a3nb3);and u5(six,equal_a7b7,equal_a6b6,equal_a5b5,equal_a4b4,equal_a3b3,a2nb2);and u6(seven,equal_a7b7,equal_a6b6,equal_a5b5,equal_a4b4,equal_a3b3,equal_a2b2,a1nb1);and u7(eight,equal_a7b7,equal_a6b6,equal_a5b5,equal_a4b4,equal_a3b3,equal_a2b2,equal_a1b1,a0nb0);or myout1(out1,a7nb7,second,third,four,five,six,seven,eight);not finally_out(out,out1);endmodule
assign:
module eight_compare1(out,a,b);output out;input [7:0]a,b;assign out=(a<b||a==b)?1:0;
Endmodulealways:
module eight_compare2(out,a,b);output out;reg out;input [7:0]a,b;always @(a or b)if(a<b||a==b)out=1;elseout=0;
Endmodule

下面展示一些 内联代码片

测试文件:module eight_compare_test();reg [7:0]a_t;reg [7:0]b_t;wire out_t;eight_compare1 eight_compare1(.out(out_t1),.a(a_t),.b(b_t));eight_compare2 eight_compare2(.out(out_t2),.a(a_t),.b(b_t));eight_compare3 eight_compare3(.out(out_t3),.a(a_t),.b(b_t));initial begin/*a=b   out=1a_t=8'b00000000;b_t=8'b00000000;         //a>b   out=0   #20 a_t=8'b10000001;b_t=8'b01110000;//a<b    out=1#20 a_t=8'b00001110;b_t=8'b00010000;//a>b out=0#20 a_t=8'b10001110;b_t=8'b00110000;*/{a_t, b_t} = 8'b00000000;endalways #5 {a_t, b_t} = {a_t, b_t} + 1;always @ (a_t or b_t)beginif (((a_t>b_t) &&out_t1==1 )|(((a_t<b_t)||(a_t==b_t))&&out_t1==0))$display("%d,%d,%d",a_t,b_t,out_t1);if (((a_t>b_t) &&out_t2==1 )|(((a_t<b_t)||(a_t==b_t))&&out_t2==0))$display("%d,%d,%d",a_t,b_t,out_t2);if (((a_t>b_t) &&out_t3==1 )|(((a_t<b_t)||(a_t==b_t))&&out_t3==0))$display("%d,%d,%d",a_t,b_t,out_t3);end
endmodule

Verilog数字系统设计——8位数字比较器相关推荐

  1. 个位数字加百位数字等于千位数字加上十位数字,且该该数为奇数

    1.输出所有满足下列条件的四位数.   条件:个位数字加百位数字等于千位数字加上十位数字,且该该数为奇数. 做题思路:1.先单独提取这个四位数的各位数 2.满足相加条件且为奇数 例:这个数字为1234 ...

  2. 输入一个三位数,分别求出x的个位数字,十位数字,百位数字的值。

    #include<stdio.h>int main(void){ int x;scanf("%d",&x);printf("%d %d %d\n&qu ...

  3. 本题要求编写程序,输出整数152的个位数字、十位数字和百位数字的值。

    输入格式: 本题无输入. 输出格式: 按照以下格式输出: 152 = 个位数字 + 十位数字10 + 百位数字100 #include <stdio.h> int main() {int ...

  4. PTA 7-44 本题要求编写程序,输入一个三位数,输出其个位数字、十位数字和百位数字。

    PTA 7-44 本题要求编写程序,输入一个三位数,输出其个位数字.十位数字和百位数字. 分数 4 作者 xcf 单位 长春理工大学 本题要求编写程序,输入一个三位数,输出其个位数字.十位数字和百位数 ...

  5. 编程序求出满足如下条件的四位正整数个数:个位数字与百位数字的和是十位数字与千位数字之和的两倍。

    编程序求出满足如下条件的四位正整数个数:个位数字与百位数字的和是十位数字与千位数字之和的两倍. 代码如下: #include<stdio.h>int main() {int n;int a ...

  6. java输出排列整齐,java 每次输出有单个数字和好几位数字时候 排列不整齐。。这个不知道有没有办法解决的?...

    java 每次输出有单个数字和好几位数字时候 排列不整齐..这个不知道有没有办法解决的? 关注:250  答案:4  手机版 解决时间 2021-02-01 17:18 提问者芣①樣哋羙莮 2021- ...

  7. 输入一个四位数字x,分别求出x的个位数字、十位数字、百位数字和千位数字的值 ,并求个位、十位、百位、千位的和 -C语言

    首先输入的是一个四位数字n,所以要先定义一个变量 然后,根据数学的计算公式,分别输出位数上的数字(这个里面可能比较绕,包括商和余数,只要是这两个概念弄清楚的话,这道题就很简单了) 具体的编程如下: # ...

  8. 从键盘输入一个三位整数n,分别求出n的个位数字、十位数字和百位数字

    #include <stdio.h>int main(void) {int n;printf("请输入一个三位数\n");scanf("%d",&a ...

  9. 北京某高校可用的电话号码有以下几类,校内电话号码由4位数字组成,第1位数字不是0,校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0)

    题目介绍 北京某高校可用的电话号码有以下几类: 校内电话号码由4位数字组成,第1位数字不是0: 校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0, 若是本市电话则再接着拨8位数字(第1位不是0 ...

最新文章

  1. 堆叠式传感器架构带来先进的视觉功能
  2. 从网页模版切图到网页生成全攻略(转)
  3. MyBatis 插入数据库返回主键
  4. 判断javascript数组的方法
  5. wilkinson--生成Wilkinson特征值测试矩阵
  6. 偷梁换柱——揭开多态的面纱
  7. 《X86汇编语言:从实模式到保护模式》读书笔记之引言
  8. github 地图上画区域的工程_筑工程测量区别
  9. 开放下载!复旦大学邱锡鹏教授发布教科书《神经网络与深度学习》
  10. nodejs mysql access denied_Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’...
  11. 【已解决】请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记
  12. python可以封装成独立程序吗_windows环境下把Python代码打包成独立执行的exe
  13. centos5.5安装csvn,以及问题处理
  14. 学生DW网页设计作业成品——电商购物网站设计(55页) 电商网页设计制作 简单静态HTML网页作品 购物网页作业成品 学生商城网站模板
  15. 颜色对照表(五)(16进制、RGB、CMYK、HSV、中英文名)
  16. mac 建 android 签名,mac android app 签名工具
  17. 单片机中段程序_单片机程序延时方法详细介绍
  18. 基于springboot框架开发的作业提交与批改系统
  19. 做自媒体前期如何开始?
  20. matlab定积分怎么输入,Matlab计算定积分的操作内容讲解

热门文章

  1. Android 实现人脸识别
  2. 银行外包Java开发的一些感想2023.2.5
  3. office(word)如何使用格式刷的方法。
  4. Mathorcup数学建模竞赛第四届-【妈妈杯】A题:“2048”游戏的数学基础及其取胜策略研究(附赛题解析及MATLAB代码)
  5. 快手安全 X 墨菲安全 | 软件供应链安全解决方案完整分享
  6. el-radio-button 设置默认选中问题
  7. 数据库常用的sql语句名称大全
  8. fedora mysql 开机启动服务_linux -- 启动时启动服务或者执行命令
  9. IDEA安装和使用教程,idea 安装本地插件
  10. 【学习笔记】Python基础入门知识笔记,万字攻略带你走进Python编程