提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 要求
  • 一、38译码器的实现并封装成IP核
  • 二、蜂鸣器的简易实现
    • 1.引入库
    • 2.读入数据
  • 三、用封装好的38译码器IP核来实现3人表决器
  • 四、FPGA板上验证
  • 总结

要求


一、38译码器的实现并封装成IP核

module v74x138(g1, g2a_l, g2b_l,a,y_l) ;
input g1,g2a_l,g2b_l;
input[2:0] a;
output[7:0] y_l;
reg[7:0] y_l=0;
always@(*)
begin
if(g1&&~g2a_l&&~g2b_l)
case(a)
7:y_l=8'b01111111;
6:y_l=8'b10111111;
5:y_l=8'b11011111;
4:y_l=8'b11101111;
3:y_l=8'b11110111;
2:y_l=8'b11111011;
1:y_l=8'b11111101;
0:y_l=8'b11111110;
default:y_l=8'b11111111;
endcase
else
y_l=8'b11111111;
end
endmodule

RTL 分析

封装成IP核并再调用它的详细步骤:

https://www.icourse163.org/learn/UESTC-1002525007?tid=1463513442#/learn/content?type=detail&id=1241758007&sm=1

封装好的IP核

二、蜂鸣器的简易实现

module beep(ext_clk_25m, ext_rst_n, buzzer);input ext_clk_25m;input ext_rst_n;output reg  buzzer;reg [19:0] cnt; //20 bit get the maximum number of 1048575;//计数模块,计数达到1000 000次,计数器清零always @ (posedge ext_clk_25m or posedge ext_rst_n)beginif(!ext_rst_n)cnt <= 20'b0;else if(cnt < 20'd999_999)cnt <= cnt + 1'b1;elsecnt <= 20'b0;endalways @ (posedge ext_clk_25m or posedge ext_rst_n)beginif(!ext_rst_n)buzzer <= 1'b0;else if(cnt < 500_000)buzzer <= 1'b1;else buzzer <= 1'b0;endendmodule

RTL分析

本来想实现的功能是: 按下按键——蜂鸣器第一次响(表示投票开始)、松开按键——蜂鸣器停止

待三人都做出投票动作后,再次 按下按键——蜂鸣器第二次响(表示投票结束)、松开按键——蜂鸣器停止

整个过程结束。

但实际的是:按下按键,蜂鸣器不响;时序逻辑还没有搞清楚........


三、用封装好的38译码器IP核来实现三人表决器(自己添加的功能是:用数码管显示赞成人数,以及蜂鸣器提示投票开始或结束)

module dsbiq_useip(a, b,c,f,SEG_DATE,DIG1,led,
ext_clk_25m, ext_rst_n, buzzer);
input a;
input b;
input c;
output f;output reg[5:0] DIG1;//片选数码管//蜂鸣器对应IO口
input ext_clk_25m;
input ext_rst_n;
output wire buzzer;output reg[2:0]led; //三盏灯表示三人的投票情况output reg[6:0]SEG_DATE;  //载入三个输入的值parameter SEG_NUM0=7'h3f, //数码管显示0SEG_NUM1=7'h06, //数码管显示1SEG_NUM2=7'h5b, //数码管显示2SEG_NUM3=7'h4f; //数码管显示3always@(*)
beginled[2]=a;  //亮灯                                    led[1]=b;led[0]=c;  DIG1=6'b111110  ; //选中第一个数码管
end always@(*)        //七段码实现
begincase({a,b,c})3'b000:SEG_DATE=SEG_NUM0;3'b001:SEG_DATE=SEG_NUM1;3'b010:SEG_DATE=SEG_NUM1;3'b011:SEG_DATE=SEG_NUM2;3'b100:SEG_DATE=SEG_NUM1;3'b101:SEG_DATE=SEG_NUM2;3'b110:SEG_DATE=SEG_NUM2;3'b111:SEG_DATE=SEG_NUM3;//defalut:SEG_DATE=SEG_NUM0;endcase
endwire [7:0]y_l;
assign f=~(y_l[7]&y_l[6]&y_l[5]&y_l[3]);  //f为1 即通过//IP核v74x138的调用
v74x138_0 uut_0
(.g1(1),.g2a_l(0),.g2b_l(0),.a({c,b,a}),.y_l(y_l)
);//调用beep模块
beep u_beep(.ext_clk_25m    (ext_clk_25m),.ext_rst_n      (ext_rst_n),.buzzer           (buzzer)
);endmodule

RTL分析

六片数码管和三盏灯的IO管脚分配

七段码和剩余端口IO管教分配

四、FPGA板上验证

三人表决器

补充:数码管显示数字原理

其中,高位到低位依次是:DP_G F E _D C B A, 共阴极数码管——输入为高电平亮!

下图为,共阴极数码管的编码表

共阴极数码管的编码表

verilog实现三人表决器相关推荐

  1. (73)FPGA面试题-Verilog实现5人表决器

    1.1 FPGA面试题-Verilog实现5人表决器 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog实现5人表决器: 5)结束语. 1.1 ...

  2. 三人表决器_数电小实验之三人表决器

    数电小实验 20级会员们的模电实验已经结束了,他们的培训计划已经从模电实验进行到了数电实验.他们将学习到一个新的知识--逻辑电路. 接下来让我们一起深入了解本次任务吧! 实验:三人表决器的设计和搭建 ...

  3. 三人表决器与八人抢答器实验

    三人表决器与八人抢答器实验 三人表决器实验报告 一.实验目的 1.辨识数字IC功能说明. 2.测试数字集成门电路,掌握输出故障排除.使用注意事项. 3.掌握逻辑函数搭建三人表决器. 二.实验资源 1. ...

  4. 用C++写一个三人表决器

    昨天离散数学老师布置了一道编程题: 设计并编程实现一个3人表决开关电路.设三个裁判分别为A.B.C,有两个及以上裁判同意,则通过表决:否则,未通过表决.同意与否通过键盘输入,可以用0.1或T.F表示. ...

  5. HNU工训中心: 三人表决器及八人抢答器实验报告

    工训中心的牛马实验 三人表决器: 实验目的 1) 辨识数字IC功能说明. 2) 测试数字集成门电路,掌握输出故障排除.使用注意事项. 3) 掌握逻辑函数搭建三人表决器. 2.实验资源 HBE硬件基础电 ...

  6. HNU-电子测试平台与工具-三人表决器

    该报告最后的得分为100分/100分. 作者认为可以将它发出来,为有需要的同学,特别是该大学该门科目的后继者提供帮助与解答. 如果喜欢可以点个赞哦,感谢. 三人表决器实验报告 班级:计科210X 学号 ...

  7. HNU-电子测试平台与工具-三人表决器实验报告

    该报告最后的得分为100分/100分. 作者认为可以将它发出来,为有需要的同学,特别是该大学该门科目的后继者提供帮助与解答. 如果喜欢可以点个赞哦,感谢. 三人表决器实验报告 班级:计XXXXX 学号 ...

  8. 51单片机 独立按键控制LED 实现的三人表决器

    有图可以看出,当(K1,K2,K3,K4)按下时(P31,P30P32,P33)短接到地,从高电位被拉到地在数字电路中高电位被看作(1)底电位被看作(0) 可以看出当P2为0时LED上才有电位差,才会 ...

  9. 带优先级的三人表决器

    1 设计要求:设计一个三人表决器,有3个裁判,其中有1位主裁判,2位副裁判.主裁判有否决权,即主裁判和其中一位副裁判投赞同票,决议方可通过,否则不通过. 注意:如果有了其中一人投赞同票就可以单票通过那 ...

  10. 通过74ls138构成的三人表决器

    三人表决器的原理为三人中至少两人同意则结果为同意,及输入信号至少两个1则结果为1.由此可推出表达式 通过74ls138的功能表可得出当G2A和G2B都接地,G1为高电平时工作且以反码形式输出.由表达式 ...

最新文章

  1. 当代大学生对学习Linux的一点拙见
  2. Reactive Extensions(Rx) 学习
  3. 怎样把做好的css样式改日期,Win8操作系统任务栏中日期样式怎么更改
  4. Win系统下用Eclipse中运行远程hadoop MapReduce程序出现Permission denied错误
  5. jpa动态扩展sql_扩展您的JPA POJO
  6. PixelShuffle特征图的上采样的方法
  7. matlab将列数据存成excel表格,matlab将列数据存成excel表格-matlab工作区数据怎么转为excel...
  8. 工作的时候 用到了 获取时间 DateTime 整理了一下
  9. 《Cisco安全防火墙服务模块(FWSM)解决方案》——2.7 软件架构
  10. 图:乐清市首届民工艺术节闭幕式暨才艺表演决赛圆满结束_渤锐软件提供了【评委打分公开展示】技术支持
  11. 接口配置锦囊妙计之三----端口自协商
  12. 谷歌浏览器、Yandex浏览器使用体验分享
  13. 红外光学动作捕捉系统硬件安装使用教程
  14. R语言笔记3_回归分析(EDA OLS Power)
  15. 苹果手机怎么在照片上添加文字_手机美图秀秀怎么给图片添加文字
  16. scrapy指定item输出项顺序到csv
  17. 用esp8266驱动0.96寸OLED屏幕 太空人动画
  18. Netty介绍与实战(三)之粘包拆包
  19. 贵溪市网络营销信息源类别
  20. 雅虎NCP:网络黄页的终结者

热门文章

  1. 复变函数在计算机科学中的应用,复变函数的应用以及发展史
  2. s7-1200PLC和第三方扫码枪走以太网通信
  3. Wireshark数据抓包分析之FTP协议
  4. 转个x64的Devcon
  5. html坦克游戏,HTML5实现经典坦克大战坦克乱走还能发出一个子弹
  6. SWAT模型在水文水资源、面源污染模拟中的实践技术
  7. 计算机桌面文件自动备份取消,电脑如何取消自动备份_电脑怎么取消自动备份...
  8. dosbox运行C语言,DOSBox怎么用?DOSBox使用教程
  9. ISO9000 质量管理和质量保证系列国际标准
  10. Java程序员面试简历模板