【实验】简单实时300点采样逻辑
2 input rst_n,
3 input iclk,
4 input trig,
5 output oclk
6 );
7
8parameter IDLE = 2'b01,
9 SAMPLE = 2'b10;
10
11parameter LENGTH = 9'd300;
12
13reg [1:0] current_state, //state
14 next_state;
15
16reg r_data_in0, //detect the risingedge reg
17 r_data_in1,
18 o_rising_edge;
19
20reg [8:0] count; //count for delay
21reg count_rst_n;
22
23// sequential circuit
24always@(posedge iclk, negedge rst_n) begin
25 if (!rst_n) begin
26 current_state <= IDLE;
27 end
28 else begin
29 current_state <= next_state;
30 end
31end
32// combinational circuit for state logic
33always@(current_state,count,o_rising_edge) begin
34 next_state = IDLE;
35
36 case (current_state)
37 IDLE : next_state = o_rising_edge ? SAMPLE : IDLE;
38 SAMPLE : next_state = (count >= LENGTH) ? IDLE : SAMPLE;
39 endcase
40end
41
42assign oclk = (count_rst_n ==1'b0)? 1'b0 : iclk;
43// combinational circuit for output logic
44always@(current_state,iclk) begin
45
46 case (current_state)
47 IDLE : begin
48 count_rst_n <= 1'b0;
49 end
50 SAMPLE : begin
51 count_rst_n <= 1'b1;
52 end
53 endcase
54end
55
56//detect the rising edge
57always@(posedge iclk) begin
58 r_data_in0 <= r_data_in1;
59 r_data_in1 <= trig;
60end
61always@(r_data_in0,r_data_in1) begin
62 o_rising_edge = ~r_data_in0 & r_data_in1; //o_rising_edge output
63end
64
65//counter
66always@(posedge iclk) begin
67 if(~count_rst_n)
68 count <= 9'b0_0000_0000;
69 else
70 count <= count + 1'b1;
71end
72
73endmodule
74
RTL图:
状态转换图:
转载于:https://www.cnblogs.com/oneseven/archive/2009/08/29/1556426.html
【实验】简单实时300点采样逻辑相关推荐
- 用php做一个简单的汇率,vue实现简单实时汇率计算功能
最近在自己摸索vue的使用,因为相对于只是去看教程和实例,感觉不如自己动手写一个demo入门来的快.刚好看到小程序中有一个简单但是很精致的应用极简汇率,而且它的表现形式和vue的表现形式很像,于是想着 ...
- 实验一 验证74LS181运算和逻辑功能
一.实验题目 实验一 验证74LS181运算和逻辑功能 二.实验目的 (1)掌握算术逻辑单元(ALU)的工作原理: (2)熟悉简单运算器的数据传送通路: (3)画出逻辑电路图及布出美观整齐的接线图: ...
- LVGL库实现的简单实时时钟表盘示例代码
LVGL库实现的简单实时时钟表盘示例代码: #include "lvgl.h" #include <time.h>static lv_obj_t * screen; s ...
- Kingbase数据库实验四 数据库系统的概要、逻辑、物理设计
实验四 数据库系统的概要.逻辑.物理设计 一.实验目的 二.实验步骤及结果 一.实验目的 能够根据实际业务需求抽象出实体.实体的属性和实体的联系. 能够抽象业务所涉及的E-R图. 能够优化E-R图 ...
- 用vue实现简单实时汇率计算功能
最近在自己摸索vue的使用,因为相对于只是去看教程和实例,感觉不如自己动手写一个demo入门来的快.刚好看到小程序中有一个简单但是很精致的应用极简汇率,而且它的表现形式和vue的表现形式很像,于是想着 ...
- 小散量化炒股记|基于多任务爬虫技术, 实现A股实时行情Level1采样
前言 股票行情数据对量化交易者来说非常重要,无论是短线交易者还是中长线交易着. 对于短线交易者来说,获取实时行情数据的方案涉及到盘中分析和买卖点监测的时效性. 对于中长线交易中来说,盘后更新全市场数据 ...
- 物联网实验-温湿度实时监测系统
前言: 这是大四上学期做的物联网实验,总共4个实验,这是第4个,也是最难的一个,当然大部分程序是我的老师编写的,我只是跟着实验指导书做出来的,希望可以帮到大家. 1. 系统工作原理 温湿度感知节点(C ...
- 编译原理实验代码c语言,编译原理实验 简单词法分析(含源代码和实验结果)
可直接运行 原创!! 附录一 实验报告样式 <编译原理>实验报告 实验2 简单词法分析 姓名 陈婷婷 学号 1009050121 班级 计科1001班 时间: 2012/4/5 地点:文波 ...
- arduino读取matlab串口,Matlab Arduino实时串行通信,采样0.004 s
我正在尝试与matlab和arduino Uno进行实时通信 . 我们的想法是用PWM发送电机命令,并读取传感器值 . 但首先我想要在串口/ USB上进行实时通信 . 因此,arduino代码正在等待 ...
最新文章
- 疫情可视化,基于知识图谱的AI“战疫”平台如何做?
- 内存都是由半导体器件构成的_开启5G新时代——XPS成像技术在半导体器件中的应用...
- 怎么强制限制div宽度
- 原因代码10044-Erdos number Time limit exceeded
- FPGA篇(六)关于Modelsim仿真时不能编译`include文件解决办法【Verilog】【Modelsim】(转)
- Synchronize异常释放锁
- 微信小程序页面间的对象传递
- SQL触发器demo
- 昨天刚招到一个程序员,第一天入职就离职了....因为不加班
- MiniGUI编程--编辑框
- 最新,最详细的LINUX图文配置教程|之DNS篇(1)
- 怎么关闭eureka的服务_SpringCloud之Eureka
- 山重水复 Thinkpad T61改装记
- 《程序员》2012年7期精彩内容:智能算法
- Unity3d场景渲染出图
- 八十二烷基笼状聚倍半硅氧烷poss无色透明黏稠液体|提高颜料分散性
- 网络设备器出现黄色感叹号有线链接无线链接选项均消失
- 腾讯云双十一云服务器配置表汇总
- LaTeX排版系统及与word的区别
- 14、RH850 F1 RAM存储器介绍