VerilogHDL程序设计与仿真作业6:

——实现74HC85的功能以及16位数值比较器

文章目录

  • VerilogHDL程序设计与仿真作业6:
      • ——实现74HC85的功能以及16位数值比较器
    • 一、实验目的
    • 二、实现74HC85的功能
      • 1、设计思路
      • 2、实现代码
      • 3、测试代码
      • 4、仿真
    • 三、用74HC85组成16位数值比较器
      • 1、设计思路
      • 2、实现代码
      • 3、测试代码
      • 4、仿真

一、实验目的

  • 实现74HC85的功能
  • 用74HC85组成16位数值比较器

二、实现74HC85的功能

1、设计思路

  • 74HC85的功能表

  • 74HC85的逻辑符号

2、实现代码

//文件名称:_74HC85.v
//fuchaoxinHUST12052020
module _74HC85(I_geq,I_leq,I_eq,A,B,F_geq,F_leq,F_eq);
input [3:0] A,B;
input I_geq,I_leq,I_eq;
output reg F_geq, F_leq, F_eq;
/*说明:
输入端:I是用于级联的输入信号,[3:0] A,B是输入的待比较数字;
输出端:F是大小比较后输出的信号,也可当作级联下一级的输入信号。
*/always @(*) begin// 默认比较时A在前B在后if (A[3]>B[3]) beginF_geq=1; F_leq=0; F_eq=0;endelse if (A[3]<B[3]) beginF_geq=0; F_leq=1; F_eq=0;endelse beginif (A[2]>B[2]) beginF_geq=1; F_leq=0; F_eq=0;endelse if (A[2]<B[2]) beginF_geq=0; F_leq=1; F_eq=0;endelse beginif (A[1]>B[1]) beginF_geq=1; F_leq=0; F_eq=0;endelse if (A[1]<B[1]) beginF_geq=0; F_leq=1; F_eq=0;endelse beginif (A[1]>B[1]) beginF_geq=1; F_leq=0; F_eq=0;endelse if (A[1]<B[1]) beginF_geq=0; F_leq=1; F_eq=0;endelse beginif (I_geq==1&&I_leq==0&&I_eq==0) beginF_geq=1; F_leq=0; F_eq=0;endelse if (I_geq==0&&I_leq==1&&I_eq==0) beginF_geq=0; F_leq=1; F_eq=0;endelse if (I_eq==1) beginF_geq=0; F_leq=0; F_eq=1;endelse if (I_geq==1&&I_leq==1&&I_eq==0) beginF_geq=0; F_leq=0; F_eq=0;endelse if (I_geq==0&&I_leq==0&&I_eq==0) beginF_geq=1; F_leq=1; F_eq=0;endendendendend// 四位不全相等时I无效,四位都相等时I有效 // 该方法比较繁琐,可以写一位比较器再进行四个级联
end
endmodule

3、测试代码

//文件名称:Test_74HC85.v
//fuchaoxinHUST12052020
`timescale 10ns/1ns
module Test_74HC85;
reg [3:0] A,B;
reg I_geq,I_leq,I_eq;
wire F_geq, F_leq, F_eq;_74HC85 U0(I_geq,I_leq,I_eq,A,B,F_geq,F_leq,F_eq);//实例化元件
initial $monitor($time,":\t I_geq=%b, I_leq=%b, I_eq=%b, A=%b, B=%b F_geq=%b, F_leq=%b, F_eq=%b \n",I_geq,I_leq,I_eq,A,B,F_geq,F_leq,F_eq); //监视器的显示内容
initial begin
// I无效 即四位不全相等A=4'b1000; B=4'b0100;#5A=4'b0100;B=4'b1000;#5A=4'b0110;B=4'b0111;#5
// I有效 即四位都相等I_geq=0; I_leq=0; I_eq=1; A=4'b0110; B=4'b0110;#5I_geq=1; I_leq=0; I_eq=0; A=4'b0001; B=4'b0001;#5I_geq=0; I_leq=0; I_eq=0; A=4'b0010; B=4'b0010;#5$stop;//停止模拟仿真
end
endmodule

4、仿真

  • 波形

  • 监控器

三、用74HC85组成16位数值比较器

1、设计思路

  • 将四个四位数值比较器通过级联的方式组成16位数值比较器;
  • 16位数值比较器(串联拓展方式)

2、实现代码

以串联拓展为例:

//文件名称:_74HC85.v
//文件名称:Compare_16.v
//fuchaoxinHUST12052020
module _74HC85(I_geq,I_leq,I_eq,A,B,F_geq,F_leq,F_eq);
input [3:0] A,B;
input I_geq,I_leq,I_eq;
output reg F_geq, F_leq, F_eq;
/*说明:
输入端:I是用于级联的输入信号,[3:0] A,B是输入的待比较数字;
输出端:F是大小比较后输出的信号,也可当作级联下一级的输入信号。
*/always @(*) begin// 默认比较时A在前B在后if (A[3]>B[3]) beginF_geq=1; F_leq=0; F_eq=0;endelse if (A[3]<B[3]) beginF_geq=0; F_leq=1; F_eq=0;endelse beginif (A[2]>B[2]) beginF_geq=1; F_leq=0; F_eq=0;endelse if (A[2]<B[2]) beginF_geq=0; F_leq=1; F_eq=0;endelse beginif (A[1]>B[1]) beginF_geq=1; F_leq=0; F_eq=0;endelse if (A[1]<B[1]) beginF_geq=0; F_leq=1; F_eq=0;endelse beginif (A[1]>B[1]) beginF_geq=1; F_leq=0; F_eq=0;endelse if (A[1]<B[1]) beginF_geq=0; F_leq=1; F_eq=0;endelse beginif (I_geq==1&&I_leq==0&&I_eq==0) beginF_geq=1; F_leq=0; F_eq=0;endelse if (I_geq==0&&I_leq==1&&I_eq==0) beginF_geq=0; F_leq=1; F_eq=0;endelse if (I_eq==1) beginF_geq=0; F_leq=0; F_eq=1;endelse if (I_geq==1&&I_leq==1&&I_eq==0) beginF_geq=0; F_leq=0; F_eq=0;endelse if (I_geq==0&&I_leq==0&&I_eq==0) beginF_geq=1; F_leq=1; F_eq=0;endendendendend// 四位不全相等时I无效,四位都相等时I有效 // 该方法比较繁琐,可以写一位比较器再进行四个级联
end
endmodule
//四位比较器module Compare_16(I_geq,I_leq,I_eq,A,B,F_geqq,F_leqq,F_eqq);
input I_geq,I_leq,I_eq;
input [15:0] A,B;
output F_geqq,F_leqq,F_eqq;
/*说明:
输入端:
输出端:
*///中间变量定义
wire [3:0] A_0,B_0,A_1,B_1,A_2,B_2,A_3,B_3;
wire [3:0] F_geq,F_leq,F_eq;//循环赋值
genvar i;
for(i=3;i>=0;i=i-1)   assign A_0[i]=A[i], B_0[i]=B[i];
for(i=7;i>=4;i=i-1)   assign A_1[i-4]=A[i], B_1[i-4]=B[i];
for(i=11;i>=8;i=i-1)  assign A_2[i-8]=A[i], B_2[i-8]=B[i];
for(i=15;i>=12;i=i-1) assign A_3[i-12]=A[i], B_3[i-12]=B[i];//先后执行四位数值比较
_74HC85 U0(I_geq,I_leq,I_eq,A_0,B_0,F_geq[0],F_leq[0],F_eq[0]);
_74HC85 U1(F_geq[0],F_leq[0],F_eq[0],A_1,B_1,F_geq[1],F_leq[1],F_eq[1]);
_74HC85 U2(F_geq[1],F_leq[1],F_eq[1],A_2,B_2,F_geq[2],F_leq[2],F_eq[2]);
_74HC85 U3(F_geq[2],F_leq[2],F_eq[2],A_3,B_3,F_geq[3],F_leq[3],F_eq[3]);//输出
assign F_geqq=F_geq[3];
assign F_leqq=F_leq[3];
assign F_eqq =F_eq [3];endmodule

3、测试代码

//文件名称:Test_Compare_16.v
//fuchaoxinHUST12052020
`timescale 10ns/1ns
module Test_CD4532;
reg I_geq,I_leq,I_eq;
reg [15:0] A,B;
wire F_geqq,F_leqq,F_eqq;Compare_16 U0(I_geq,I_leq,I_eq,A,B,F_geqq,F_leqq,F_eqq);//实例化元件
initial $monitor($time,":\t I_geq=%b, I_leq=%b, I_eq=%b, A=%b, B=%b, F_geqq=%b, F_leqq=%b, F_eqq=%b \n", I_geq,I_leq,I_eq,A,B,F_geqq,F_leqq,F_eqq); //监视器的显示内容
initial begin
//使能信号为0时I_geq=0; I_leq=0; I_eq=1; A=16'b0010_0000_0000_0000; B=16'b0010_0000_0000_0100;#5I_geq=0; I_leq=0; I_eq=1; A=16'b1000_0000_0000_0000; B=16'b0100_0000_0000_0000;#5I_geq=0; I_leq=0; I_eq=1; A=16'b0100_0000_0000_0000;B=16'b0100_0000_0000_0000;#5
//使能信号为1时I_geq=0; I_leq=0; I_eq=1; A=16'b0001_0000_0000_0000; B=16'b1000_0000_0000_0000;#5I_geq=0; I_leq=0; I_eq=1; A=16'b0000_0000_0100_0000; B=16'b0100_0000_0000_0000;#5I_geq=0; I_leq=0; I_eq=1; A=16'b0000_0000_0000_0001; B=16'b1000_0000_0000_0000;#5$stop;//停止模拟仿真
end
endmodule

4、仿真

  • 波形

  • 监视器

实现74HC85的功能以及16位数值比较器相关推荐

  1. verilog——74HC85四位数值比较器并扩展为16位数值比较器

    verilog--74HC85四位数值比较器并扩展为16位数值比较器 74HC85的仿真 设计思路 代码 设计模块 测试模块 仿真结果 扩展为16位比较器 设计思路 串行代码实现 设计模块 测试模块 ...

  2. 数电实验(四)利用集成数值比较器74LS85设计一个4位数值比较器

    数电实验(四)利用集成数值比较器74LS85设计一个4位数值比较器 要求: 1.输入为两个4位二进制数,分别接四个逻辑电平开关,同时接数码管 2. 输出和LED相连 Multisim仿真:

  3. 平行空间怎么设置32位_每周推荐 | 空间占用减小32%,具有高级功能的16位逻辑封装...

    TVSOP48 是一款 48 引脚的封装,比 TSSOP48 减少了 32% 的封装面积,把现有功能压缩进一个更小的封装.TVSOP48 是一款高密度封装,间距为 0.4 毫米,有助于减小电路板尺寸和 ...

  4. BMP格式知识之二:16位,24位,32位的BMP图片算法是如何运算的

    BMP格式知识之二:16位,24位,32位的BMP图片算法是如何运算的 原文:http://blog.csdn.net/qq445803843/article/details/46476433 这段代 ...

  5. 计算机中数值怎么比较大小,数值比较器,数值比较器的作用和原理是什么?

    描述 数值比较器,数值比较器的作用和原理是什么? 一.数值比较器的定义及功能 在数字系统中,特别是在计算机中都具有运算功能,一种简单的运算就是比较两个数A和B的大小.数值比较器就是对两数A.B进行比较 ...

  6. ionic使用CardIO实现扫描银行卡功能(只能扫描16位以下,并且是浮雕数字)

    在一些涉及支付功能的app,一般需要绑定银行卡,除了靠用户手动输入银行卡号,用手机扫描银行卡也是一种常用的手段,查阅了写资料,发现ionic有CardIO插件可以实现这个功能,就兴致冲冲去尝试,结果有 ...

  7. photoshop图层锁无法解开编辑不能新建图层很多功能灰色不能操作 原因新建时选了RGB32位。选8或16位才能新建图层

    故障:photoshop图层锁无法解开可以编辑不能新建图层很多功能灰色不能操作 原因:新建时选了RGB32位,选8或16位才能新建图层. 如果不懂,就选默认参数就可以.

  8. rand.6位数值dechex转换成16进制动态改变单元格颜色

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  9. 王爽 16 位汇编语言学习记录

    以下为汇编学习记录,内容全部出自王爽的16位<汇编语言>,如有错误,可直接去查看原书. 汇编语言   机器语言是机器指令集的集合,机器指令是一列二进制数字,计算机将其翻译成高低电平,从而使 ...

最新文章

  1. C#中调用Windows API时的数据类型对应关系
  2. to_excel() got an unexpected keyword argument ‘sheetname‘
  3. 航天智慧物流!智能汽车竞赛—航天赛道开始报名啦!
  4. vue中 裁剪,预览,上传图片 的插件
  5. Silver Cow Party POJ - 3268 (固定起点和固定终点的最短路)
  6. 解决点击MDI父窗体下拉菜单,子窗体重复出现的问题
  7. python开发应用程序错误_Python 程序员经常犯的 10 个错误
  8. bootstrap在iframe框架中实现由子页面在顶级页面打开模态框(modal)
  9. 手写token解析器、语法解析器、LLVM IR生成器(GO语言)
  10. Hbase 二级索引
  11. haversine根据经纬度算距离
  12. 《统计数据会说谎》阅读总结
  13. excel多元线性拟合_多元线性回归EXCEL图表
  14. uwp浏览器java源码_从网站打开UWP应用程序
  15. 视频教程-ASP.NET就业实例视频教程(1)基础入门——搭建网站开发环境教学视频-.NET
  16. 从电话网到IP互联网再到CDN
  17. 数据结构 在顺序表中头插及尾插的实现
  18. CSS样式内联选择器选择器优先级伪类顺序
  19. 稻盛和夫:只有极度认真工作,才能扭转人生!
  20. 乐山市计算机学校的董事长是,乐山市计算机学校庆祝建校25周年

热门文章

  1. iptables使用limit控制新建连接速率
  2. bzoj4399 魔法少女LJJ 线段树合并
  3. 八大口碑速溶咖啡品牌盘点
  4. 【线上直播】人机多轮对话的方法综述
  5. 顺丰2021服务器管理(python)
  6. 名悦集团:高速路上突遇发动机熄火该怎么办
  7. 【嵌入式热敏打印模块(1)】
  8. html文档元素大小相关的单位,网页字体单位px、em、%、rem、pt、vm、vh介绍
  9. 小米实习---推荐系统--二面
  10. QQ坦白说代码信息获取过滤代码讲解