数字IC设计学习笔记

8位7段数码管1

1 原理图
2 Verilog 代码
3 Modelsim仿真

1. 原理图

8位数码管

数码管内部结构图

  • 数码管分为共阴极数码管和共阳极数码管;本文采用共阳极数码管。每个数码管内部的led灯的所有阳极连在一起,给正电压;当三极管的基极为高电平,三极管导通,VCC通过电阻,三极管加载到led灯的阳极。当led灯阴极为低电平,led灯点亮;当led灯阴极为高电平,led灯灭。
    由于无法同时点亮8个数码管中单一的一个led灯,故采用动态扫描实现。
    动态扫描:将操作平均共分为不同的时间段,如:8个数码管,分为8ms,则:
    1ms: sel0 = 1, sel1 = 0; sel2 = 0;…sel7 = 0, a=0; 数码管0的led0亮;
    2ms: sel0 = 0, sel1 = 1; sel2 = 0;sel7 = 0, b=0; 数码管1的led1亮;
    3ms: sel0 = 0, sel1 = 0; sel2 = 1; sel7 = 0, c=0; 数码管2的 led2亮;

    8ms: sel0 = 0, sel1 = 0; sel2 = 0; sel7 = 1, c=0; 数码管7的led7亮;
    每1ms切换一次,故需要分频,得到一个1KHzd的时钟clk_1k,当clk_1k的第一个上升沿到来时,数码管0亮,第二个上升沿到来时数码管1亮…。
    –>div
  • 控制端a,b,c,d,e,f,g段码需要由显示数据控制,显示数据通过对输入数据译码得到。第1毫秒的时候a,b,c,d,e,f,g,h对应1段码组合;第2毫秒的时候a,b,c,d,e,f,g,h对应2的段码组合…,涉及到显示内容的切换,每一毫秒,显示内容都是不一样的,如:
    数码管0,显示1:1ms, 9ms, 17ms, 25ms, 33ms, 41ms, 49ms, 57ms -->a,b,c,d,e,f,g,h呈现1对应的段码;
    数码管1,显示2:2ms, 10ms, 18ms, 26ms, 34ms, 42ms, 50ms, 58ms -->a,b,c,d,e,f,g,h呈现2对应的段码;
    数码管2,显示3:3ms, 11ms, 19ms, 27ms, 35ms, 43ms, 51ms, 59ms -->a,b,c,d,e,f,g,h呈现3对应的段码;

    数码管7,显示3:8ms, 16ms, 24ms, 32ms, 40ms, 48ms, 56ms, 64ms -->a,b,c,d,e,f,g,h呈现3对应的段码;
    段码的状态每1ms也要切换一次–>带显示内容切换每1ms也要切换一次
    每个数码管的显示数据:4位的输入数据data[3:0];
    8个数码管的显示数据:8 * 4位的输入数据data[3:0] = 32位的输入数据data[31:0];
    –>MUX8-1
  • MUX8-1的选择控制端为当前扫描的数码管位置,sel[7:0],依次循环左移1位。
    –>shift8
    低功耗时,控制数码管显示与否<=>控制sel的状态,如果sel的值为全0,则数码管处于全灭状态;
    –>MUX2-1

    单一数码管工作原理


    –>LUT, 4位输入,8位输出

原理图

实验现象:
在Quartus中,使用in system source and probes editor, 输入需要显示在数码管上的数据,数码管显示对应的数字。

2 Verilog 代码

//----top module---------------------------------
module hex8(input clk,input rst_n,input en,input [31:0] data,output reg [6:0] seg,output [7:0] sel
);reg [14:0] cnt_d;reg        clk_1k;reg [7:0]  sel_reg;reg [3:0]  data_reg;
//----div----------------------------------always@(posedge clk or negedge rst_n)if(!rst_n)cnt_d <= 15'd0;else if(!en)cnt_d <= 15'd0;else if(cnt_d == 15'd24_999)cnt_d <= 0;elsecnt_d <= cnt_d + 15'd1;always@(posedge clk or negedge rst_n)if(!rst_n)clk_1k <= 0;else if(cnt_d == 15'd24_999)clk_1k <= ~clk_1k;elseclk_1k <= clk_1k;//----shift8-------------------------------always@(posedge clk_1k or negedge rst_n)if(!rst_n)sel_reg <= 8'b0000_0001; else if(sel_reg == 8'b1000_0000)sel_reg <= 8'b0000_0001;elsesel_reg <= sel_reg << 1;
//----MUX8-1-------------------------------always@(*)begincase(sel_reg)8'b0000_0001: data_reg <= data[3:0];8'b0000_0010: data_reg <= data[7:4];8'b0000_0100: data_reg <= data[11:8];8'b0000_1000: data_reg <= data[15:12];8'b0001_0000: data_reg <= data[19:16];8'b0010_0000: data_reg <= data[23:20];8'b0100_0000: data_reg <= data[27:24];8'b1000_0000: data_reg <= data[31:28];default: data_reg <= 4'd0;endcaseend
//----LUT-----------------------------------always@(*)begincase(data_reg)4'd0: seg <=  7'b000_0001;4'd1: seg <=  7'b100_1111;4'd2: seg <=  7'b001_0010;4'd3: seg <=  7'b000_0110;4'd4: seg <=  7'b100_1100;4'd5: seg <=  7'b010_0100;4'd6: seg <=  7'b010_0000;4'd7: seg <=  7'b000_1111;4'd8: seg <=  7'b000_0000;4'd9: seg <=  7'b000_0100;4'd10: seg <= 7'b000_1000;4'd11: seg <= 7'b110_0000;4'd12: seg <= 7'b011_0001;4'd13: seg <= 7'b100_0010;4'd14: seg <= 7'b011_0000;4'd15: seg <= 7'b011_1000;//        default: seg <= 000_0000;endcase    end
//----MUX2-1---------------------------------assign sel = (en)? sel_reg:8'd0;endmodule
//-------------------------------------------------
//----testbench--------------------------------
`timescale 1ns/1ns
`define clock_period 20
module tb_hex8;reg clk;reg rst_n;reg en;reg [31:0] data;wire [6:0] seg;wire [7:0] sel;hex8 uut(.clk(clk),.rst_n(rst_n),.en(en),.data(data), .seg(seg),.sel(sel)
);initial clk = 1;always #(`clock_period/2) clk = ~clk;initial beginrst_n = 0;en = 1;data = 32'h12345678;#(`clock_period*20);rst_n = 1;#(`clock_period*20);   #20000000;data = 32'h87654321;    #20000000;data = 32'h89abcdef;        #20000000;$stop;endendmodule

3. Modelsim仿真

内容源自对小梅哥FPGA自学笔记的总结^^

【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~

数字IC设计学习笔记_8位7段数码管1相关推荐

  1. 数字IC设计学习笔记_Formality 形式验证

    数字IC设计学习笔记 Formality 形式验证 1. 基本特点 2. Reference Design 和Implementation Design 3. container 4. 读入共享技术库 ...

  2. 数字IC设计学习笔记_静态时序分析STA_ PrimeTime 基本概述

    数字IC设计学习笔记 PrimeTime 基本概述 1. PrimeTime 基本概述 2. 运行模式 1. PrimeTime 基本概述 PrimeTime,Synopsys公司提出的,针对于复杂的 ...

  3. 数字IC设计学习笔记_静态时序分析STA_伪路径False Paths

    数字IC设计学习笔记 半周期路径Half Cycle Path 1. 伪路径False Paths 2. 如何处理False Paths 1. 伪路径False Paths 在设计中,有些路径是不可能 ...

  4. 数字IC设计学习笔记_静态时序分析STA_ STA基本概念

    数字IC设计学习笔记 STA基本概念 1. STA基本概念 2. 时序弧概念 Timing Arc 3. 建立时间和保持时间概念 4. 时序路径概念Timing Path 5. 时钟域概念clock ...

  5. 数字IC设计学习笔记(一)——逻辑综合简介

    目录 综合的抽象层次 逻辑级(RTL)综合流程 参考资料 综合的抽象层次 根据不同的抽象层次,综合可分为电路级综合.逻辑级综合.行为级综合 电路综合将电路的逻辑翻译成满足性能要求的晶体管网表,包括使用 ...

  6. Cadence IC设计学习笔记一

    Virtuoso Schematic Editor学习 启动 建立新库.新单元及新视图 添加元件 添加管脚 添加电源和地 摆放元件并加网线 层次化设计-symbol生成 电路仿真 创建激励信号电路模块 ...

  7. 数字IC前端学习笔记:LSFR(线性反馈移位寄存器)

    引言 LSFR(线性反馈移位寄存器)用于产生可重复的伪随机序列PRBS(Pseudo-Random Binary Sequence),结构包括n级D触发器和一些异或门(或同或门)组成,在每个时钟沿,后 ...

  8. 模拟IC设计学习笔记(1)---恒流源负载的共源极放大器极点的观察与计算

    一.电路设计 1.恒流源负载的共源极放大器模型 2.在本次电路仿真中我们设定的参数: pmos:W=L=5um nmos:W=L=2um 输出点放置1pF电容(较大,即忽略两个MOS管的漏端电容)  ...

  9. 笔试题-2023-燧原-数字IC设计【个人解答版】

    回到首页:2023 数字IC设计秋招复盘--数十家公司笔试题.面试实录 推荐内容:数字IC设计学习比较实用的资料推荐 题目背景 笔试时间:2022.07.07 应聘岗位:数字IC设计 题目评价 难易程 ...

  10. 笔试题-2023-思远半导体-数字IC设计【纯净题目版】

    回到首页:2023 数字IC设计秋招复盘--数十家公司笔试题.面试实录 推荐内容:数字IC设计学习比较实用的资料推荐 题目背景 笔试时间:2022.08.20 应聘岗位:数字IC设计工程师 笔试时长: ...

最新文章

  1. SQL中的循环语句_类似FOR循环
  2. linux命令tree
  3. 【解决方案】Windows10局域网内配置文件夹共享(附网络中没有找到的情况解决方案)
  4. myisam 表锁优化参考
  5. onCreateOptionsMenu
  6. 第五届省赛(软件类)真题----Java大学C组答案及解析
  7. Pandas Index 转换排序联表选取
  8. Angular2 指令
  9. Color.js增强你对颜色的控制
  10. Android内存泄漏检测利器:LeakCanary
  11. android之去掉actionbar
  12. MySQL集群(四)之keepalived实现mysql双主高可用
  13. 芯片制造工艺中的衡量指标
  14. UI 手势 点击
  15. C# 在wpf中如何使用image
  16. 团队协作工具--worktile
  17. 2017年18岁的北京文科状元父母都是外交官,关于高考,他说出了我们竭力回避的戳心真相
  18. python批量修改图片名
  19. 知云文献翻译打不开_科研星火 | 基础技能——翻译篇
  20. revi怎么弄插件能够使附件发生一定角度的旋转?

热门文章

  1. 从一位前阿里P7被裁员,聊技术人的第二职业!
  2. VS Code 中常用的 (前端)PHP 编程插件(2018)
  3. Java 的 FileInputStream 是否需要 close
  4. 基于深度学习模型(1D CNN)实现钓鱼网站检测
  5. QT图片缩放、拖动、重置
  6. 高等代数第3版下 [丘维声 著] 2015年版_3折购书优惠码限时抢(人工智能类)
  7. 回眸 2020,展望 2021
  8. java跳转页面_几种方式实现Javaweb页面跳转
  9. 【学习笔记】【MAC】sdk自带uiautomatorviewer启动报错问题解决
  10. php在线图片签名,ElementUi+Vue+Php+fpdf+fpdi 实现文档在线签订(图片水印、手写签名)...