- 浏览: 564689 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (344)
- ··············未分类············· (33)
- Eclipse 插件 (15)
- EDA 工具 (1)
- Linux/Unix (3)
- Java (43)
- Java Applet (1)
- Java Draw2d (22)
- Java Draw2d version2 (6)
- Java GEF (2)
- Java SWT (21)
- Java SWT Image 图像 (21)
- Java SWT Tree (16)
- Java SWT Table (4)
- Java SWT TableViewer (11)
- Java SWTbot (4)
- Java Test (2)
- Java Thread 多线程 (22)
- Java Zest (5)
- RC2_3S400学习笔记 (16)
- tcl 脚本 (10)
- Verilog (7)
- XML (6)
- 国家 (5)
- 感叹 (4)
- 面试题 (9)
- 生活 (36)
- 足球 世界杯 (8)
- 老公看你的 (3)
- web开发 (1)
- 数据结构——图 (7)
- c language (1)
最新评论
-
zxjlwt:
路过素人派http://surenpi.com
SWT 树的事件 SWT.Selection SWT.CHECK SWT.DefaultSelection -
hj01kkk:
1楼用法正解
JDK 7 中的 Fork/Join 模式 -
fish_no7:
使用 new SortTask().fork()
JDK 7 中的 Fork/Join 模式 -
wpf523:
mark
Java 多线程例子6 线程安全 线程同步 同步代码块 同步函数 -
uniquejava:
以前碰到过,估计是在icu包中实现了双击自动选中一段文本的功能 ...
java.lang.NoClassDefFoundError: com/ibm/icu/text/BreakIterator
实验内容
本次实验要设计一个计数器,并在数码管上面显示计数器的计数过程。
根据实验要求,程序大体可分为三个部分:分频部分,计数部分, 显示部分。
由于开发板提供的时钟频率是50MHz,人眼睛没法达到这个速度,四个数码管也
不好显示这么高频率计数后得到的巨大数字,所以要先对50MHz进行分频,这样才能
保证计数器每计一个数的周期在一秒左右。
计数部分由多个寄存器构成,每个时钟的上升沿,寄存器里面的数值就加一,计数
器复位数值是0000,当计满到9999的时候,计数器返回0000状态,重新开始计数。
module counter(clk,rst_n, seg_en0, seg_en1, seg_en2, seg_en3, data0, data1, data2, data3, data4, data5, data6, data7 ); input clk,rst_n ; output seg_en0,seg_en1,seg_en2,seg_en3 ; output data0,data1,data2,data3 ; output data4,data5,data6,data7 ; reg seg_en0,seg_en1,seg_en2,seg_en3 ; reg [24:0 ] clk_cnt ; reg [3 :0 ] cnt0,cnt1,cnt2,cnt3 ; reg [7 :0 ] data_out ; reg [3 :0 ] state ; wire data0,data1,data2,data3 ; wire data4,data5,data6,data7 ; wire data_en0,data_en1,data_en2,data_en3; wire clk_24,clk_15 ; wire cntin0 = 4'b0000 ; wire cntin1 = 4'b0000 ; wire cntin2 = 4'b0000 ; wire cntin3 = 4'b0000 ; parameter SHOW0 = 4'b0001 , SHOW1 = 4'b0010 , SHOW2 = 4'b0100 , SHOW3 = 4'b1000 ; function [7 :0 ] translater3_8 ; input [3 :0 ] cnt ; begin case ( cnt ) 4'b0000: translater3_8 = 8'b1111_1100 ; 4'b0001: translater3_8 = 8'b0110_0000 ; 4'b0010: translater3_8 = 8'b1101_1010 ; 4'b0011: translater3_8 = 8'b1111_0010 ; 4'b0100: translater3_8 = 8'b0110_0110 ; 4'b0101: translater3_8 = 8'b1011_0110 ; 4'b0110: translater3_8 = 8'b1011_1110 ; 4'b0111: translater3_8 = 8'b1110_0000 ; 4'b1000: translater3_8 = 8'b1111_1110 ; 4'b1001: translater3_8 = 8'b1111_0110 ; endcase end endfunction always @ ( posedge clk or negedge rst_n ) if( !rst_n ) begin clk_cnt <= 25'b0_0000_0000_0000_0000_0000_0000 ; end else begin clk_cnt <= clk_cnt + 25'b0_0000_0000_0000_0000_0000_0001 ; end assign clk_24 = clk_cnt[21] ; assign clk_15 = clk_cnt[14] ; always @ ( posedge clk_24 or negedge rst_n ) if( !rst_n ) begin cnt0 <= cntin0 ; cnt1 <= cntin1 ; cnt2 <= cntin2 ; cnt3 <= cntin3 ; end else begin if( (4'b1001 == cnt3) && (4'b1001 == cnt2) && (4'b1001 == cnt1) && (4'b1001 == cnt0) ) begin cnt0 <= 4'b0000 ; cnt1 <= 4'b0000 ; cnt2 <= 4'b0000 ; cnt3 <= 4'b0000 ; end else begin if( (4'b1001 == cnt2) && (4'b1001 == cnt1) && (4'b1001 == cnt0) ) begin cnt0 <= 4'b0000 ; cnt1 <= 4'b0000 ; cnt2 <= 4'b0000 ; cnt3 <= cnt3 + 4'b0001 ; end else begin if( (4'b1001 == cnt1) && (4'b1001 == cnt0) ) begin cnt0 <= 4'b0000 ; cnt1 <= 4'b0000 ; cnt2 <= cnt2 + 4'b0001 ; cnt3 <= cnt3 ; end else begin if( 4'b1001 == cnt0 ) begin cnt0 <= 4'b0000 ; cnt1 <= cnt1 + 4'b0001 ; cnt2 <= cnt2 ; cnt3 <= cnt3 ; end else begin cnt0 <= cnt0 + 4'b0001 ; cnt1 <= cnt1 ; cnt2 <= cnt2 ; cnt3 <= cnt3 ; end end end end end assign data_en0 = (cnt0||cnt1||cnt2||cnt3) ? 1'b1 : 1'b0 ; assign data_en1 = (cnt1||cnt2||cnt3) ? 1'b1 : 1'b0 ; assign data_en2 = (cnt2||cnt3) ? 1'b1 : 1'b0 ; assign data_en3 = (cnt3) ? 1'b1 : 1'b0 ; //assign data_en0 = cnt0 ? 1'b0 : 1'b1 ; //assign data_en1 = cnt1 ? 1'b0 : 1'b1 ; //assign data_en2 = cnt2 ? 1'b0 : 1'b1 ; //assign data_en3 = cnt3 ? 1'b0 : 1'b1 ; always @ ( posedge clk_15 or negedge rst_n ) if( !rst_n ) begin state <= SHOW0 ; seg_en0 <= 1'b0 ; seg_en1 <= 1'b0 ; seg_en2 <= 1'b0 ; seg_en3 <= 1'b0 ; data_out <= 8'b0000_0000 ; end else begin case( state ) SHOW0: begin seg_en0 <= data_en0 ; seg_en1 <= 1'b0 ; seg_en2 <= 1'b0 ; seg_en3 <= 1'b0 ; data_out[7:0] <= translater3_8(cnt0) ; state <= SHOW1 ; end SHOW1: begin seg_en0 <= 1'b0 ; seg_en1 <= data_en1 ; seg_en2 <= 1'b0 ; seg_en3 <= 1'b0 ; data_out[7:0] <= translater3_8(cnt1) ; state <= SHOW2 ; end SHOW2: begin seg_en0 <= 1'b0 ; seg_en1 <= 1'b0 ; seg_en2 <= data_en2 ; seg_en3 <= 1'b0 ; data_out[7:0] <= translater3_8(cnt2) ; state <= SHOW3 ; end SHOW3: begin seg_en0 <= 1'b0 ; seg_en1 <= 1'b0 ; seg_en2 <= 1'b0 ; seg_en3 <= data_en3 ; data_out[7:0] <= translater3_8(cnt3) ; state <= SHOW0 ; end default: state <= SHOW0 ; endcase end assign data0 = data_out[0] ; assign data1 = data_out[1] ; assign data2 = data_out[2] ; assign data3 = data_out[3] ; assign data4 = data_out[4] ; assign data5 = data_out[5] ; assign data6 = data_out[6] ; assign data7 = data_out[7] ; endmodule /* module test; reg clk,rst_n ; wire seg_en0,seg_en1,seg_en2,seg_en3 ; wire data0,data1,data2,data3 ; wire data4,data5,data6,data7 ; initial begin clk = 0 ; rst_n = 1 ; #10 rst_n = 0 ; #10 rst_n = 1 ; #100000000 $stop; end always #5 clk = ~clk ; counter cc_coun(.clk(clk),.rst_n(rst_n), .seg_en0(seg_en0), .seg_en1(seg_en1), .seg_en2(seg_en2), .seg_en3(seg_en3), .data0(data0), .data1(data1), .data2(data2), .data3(data3), .data4(data4), .data5(data5), .data6(data6), .data7(data7) ); endmodule */
发表评论
-
学习笔记
2010-06-30 19:26 899学习“红色飓风2笔记”1,ISE中也可以完成仿真啊,参见3s4 ... -
ISE中下载程序出错,msk文件缺失问题
2010-06-29 19:42 1908原文:http://cathyun.spaces.live.c ... -
FPGA通过JTAG下载程序出现“Programming terminated. DONE did not go high.”问题的解决方法
2010-06-29 18:37 3190原文:http://blog.csdn.net/wjabcjw ... -
实验十三 I2C总线协议控制器实验
2010-06-29 15:15 948看不到效果 -
实验十二 USB接口读写控制实验
2010-06-29 15:14 1059没完成 -
实验十一 PS2接口控制与显示实验
2010-06-29 14:15 945实验原理 本次实验要编写一个能实现PS/2端口功能的程序。P ... -
实验十 串口通信实验
2010-06-29 13:40 966实验结果 下载完毕后,用开发包中提供的串口超级终端,设置波特 ... -
试验九 VGA显示控制实验
2010-06-29 13:08 915没有买这个扩展板,是不是不好做这个试验了。 1,可以了解VG ... -
实验八 LCD显示控制实验
2010-06-29 13:04 2054实验原理 1、1602 液晶显示简介: 液晶屏幕分为点阵型 ... -
实验七 蜂鸣器控制实验
2010-06-29 12:55 1399实验原理 与利用微处 ... -
实验六 按键防抖动实验
2010-06-29 12:46 2403实验原理 若要使用开发板上面的四个SW按键来做计数输入,就需 ... -
试验四 数码管控制实验
2010-06-29 12:29 12641,循环显示1-F。 module Seven_LED( ... -
试验三 状态机应用实验
2010-06-29 12:17 1529实验原理 状态机设计 ... -
试验二 分频器实验
2010-06-29 12:06 1266试验原理: 经过处理后得到的时钟频率比输入的时钟频率慢的情况 ... -
试验一 LED控制实验
2010-06-29 10:56 1198刚买了一个红色飓风二代的板子抓紧时间学习哈。 实验内容: ...
相关推荐
实验环境基于Windows XP系统,使用了启东试验教学平台作为编译环境。实验步骤包括线路连接、示波器校准、代码编写与编译、程序下载到8253以及实验数据的测试与分析。 实验中,8253的输入时钟频率为8MHz,通过分频器...
至于提供的"第五次试验PPt.ppt"文件,它可能包含了实验的详细步骤、电路图、真值表以及预期结果的分析。在PPT中,可能会讲解如何构建这些计数器电路,可能使用了集成芯片如D flip-flops或者JK flip-flops,以及如何...
【计数器实验】是单片机实验的一部分,主要目的是学习如何使用单片机的定时/计数器功能。在这个实验中,学生需要对外部的单脉冲信号进行计数,当计数达到5次时,会产生一个计数中断。这个实验在物理与机电工程学院的...
实验的主要目的是设计一个自然二进制码的五进制计数器,并掌握同步时序电路逻辑设计的过程。 在实验中,首先需要确定状态转移图或状态转移表,然后进行状态化简、状态分配、选择触发器、排除孤立状态等步骤。最后,...
本文主要介绍了试验三集成计数器的设计、实现和应用,涵盖了集成计数器的基本原理、设计方法、实验步骤和报表要求等方面。 一、实验目的 本实验旨在掌握集成计数器的构成、设计和实现计数电路,通过实验掌握集成...
这篇实验报告是关于单片机中的定时器/计数器应用的一个实例,主要涉及的知识点包括: 1. **定时器/计数器的工作原理**:定时器/计数器是单片机中重要的硬件资源,可以实现定时或计数功能。在本实验中,它被用来计算...
单片机计数器是微控制器中不可或缺的一部分,它在电子系统中扮演着计数、定时和频率测量的重要角色。本试验将通过Proteus仿真软件来深入理解单片机...实验五--计数器,无疑是深入理解单片机计数器操作的一个重要步骤。
定时器计数器试验.zip"压缩包中,我们可以预见到一些关于如何在NUC972上进行定时器和计数器实验的资料或代码。 首先,我们需要理解定时器和计数器的基本概念。定时器是一种硬件设备,它可以在预设的时间间隔后产生...
该试验报告主要关注的是交换计数器的实现,这是一个在计算机网络和通信领域中的关键组件,主要用于统计网络接口的流量和性能。以下是基于提供的部分内容详细解释的知识点: 1. **交换计数器**:交换计数器是网络...
实验报告——计数器功能试验 本实验主要围绕两种类型的计数器展开,分别是4位可逆计数器74193和4位加法计数器74160,旨在帮助学生深入理解计数器的工作原理,并熟练运用EDA软件进行功能验证。 1. **4位可逆计数器...
实验五时序逻辑电路实验报告 一、实验目的 掌握同步计数器设计方法与测试方法 掌握常用中规模集成计数器的逻辑功能与使用方法 二、实验设备 * THHD-2型数字电子计数实验箱 * 示波器 * 信号源器件 * 74LS163、74...
在这个实验中,51单片机将连接到一个试验箱,试验箱上有一个或多个按键,用于输入数字。每次按键被按下,定时器都会开始计数,直到接收到下一个按键输入时停止,并更新显示的数字。这意味着我们需要编写程序来处理...
从工厂的生产线上对产品数量的监控,到实验室中对试验次数的记录,再到日常生活中如门票计数器、流量监控等,计数器都扮演着重要角色。 8. 计数器的维护与故障排除:为保证计数器长时间稳定运行,用户需要定期进行...
试验过程中,测试装置需产生与真实雷电相似的电流波形和能量,以确保实验结果的可信度。 接着,我们讨论测试装置的构成。一个标准的避雷计数器放电试验装置可能包括以下几个部分:电源系统、脉冲发生器、控制单元、...
在实验五中,学生被要求设计一个十进制计数器。十进制计数器是指在每次时钟脉冲到来时,计数值会增加1,直到达到9后再回到0,形成0到9的循环。设计计数器通常分为两步:图形法设计和Verilog HDL语言设计。图形法设计...
**8253A定时/计数器实验** 8253A是一种可编程定时/计数器,常用于系统的定时、计数功能。实验中,我们研究了其工作模式、计数方式以及如何通过I/O指令进行编程配置。这为我们理解系统级的定时服务和中断处理提供了...
2-87 二-五-十进制异步计数器74LS290 2-88 用置零法将74LS160接成6进制计数器 2-89 2-88电路的改进 2-90 用置数法将74LS160接成6进制计数器(1) 2-91 用置数法将74LS160接成6进制计数器(2) 2-92 用两片74LS...
实验中使用了两个计数器,分别是计数器0和计数器1。计数器0实现周期性负脉冲输出,时钟信号为1MHz,输出信号频率为1KHz。计数器1实现周期性方波输出,时钟信号为2MHz,输出信号频率为50KHz。 在实验中,我们需要画...
计算机组成原理实验是深入理解计算机系统底层运作的关键环节,本次实验——TEC-2试验计算机微程序控制器实验,旨在让参与者全面了解微程序控制器的工作原理和技术细节。微程序控制器是现代计算机的重要组成部分,它...
实验报告的标题是“数电实验报告试验五触发器及其应用”,这意味着实验内容涉及到数字电子领域中的触发器及其实际应用。触发器是数字电路中最基本的时序逻辑元件之一,它们用于存储一位二进制信息,即“0”或“1”,...