【黑金教程笔记之007】【建模篇】【Lab 06 SOS信号之二】—笔记
控制模块的协调角色。

实验六用到了实验四的按键消抖模块debounce_module.v和实验五的sos_module.v。
设计思路:
debounce_module.v看成一个输入,sos_module.v看成输出,而inter_control_module.v负责两个模块之间的沟通。
当按键按下时,debounce_module.v过滤抖动,然后产生一个时钟的高脉冲(原码里是100ms)Trig_sig信号。当Inter_control_module.v接收到这个高脉冲信号,它会转发产生一个时钟的高脉冲SOS_en_sig信号。即inter_control_module.v间接触发sos_module.v。
模块:
/****************************************
module name: debounce_module.v
function: debounce a key
pin assignments(for DE2-115): by yf.x
2014-11-05 ****************************************/ module debounce_module(
CLK,
RST_n,
Pin_in,
Pin_out
); input CLK;
input RST_n;
input Pin_in;
output Pin_out; /*******************************/ wire H2L_Sig;
wire L2H_Sig; detect_module u0(
.CLK(CLK),
.RST_n(RST_n),
.Pin_in(Pin_in), //input from top
.H2L_Sig(H2L_Sig), //output to u1
.L2H_Sig(L2H_Sig) //output to u1
); /***************************************/ delay_module u1(
.CLK(CLK),
.RST_n(RST_n),
.H2L_Sig(H2L_Sig), //input from u1
.L2H_Sig(L2H_Sig), //input from u1
.Pin_out(Pin_out) //output to top
); /***************************************/ endmodule
/************************************************************
module name: inter_control_module.v
function: detect trig_sig and generate SOS_en_sig. by yf.x
2014-11-08 ************************************************************/ module inter_control_module(
CLK,
RST_n,
Trig_sig,
SOS_en_sig
); input CLK;
input RST_n;
input Trig_sig;
output SOS_en_sig; /****************************************************/ reg i;
reg isEn; always @(posedge CLK or negedge RST_n)
if(!RST_n)
begin
i<='b0;
isEn<='b0;
end
else
case(i)
'b0:
if(Trig_sig)
begin
isEn<='b1;
i<='b1;
end 'b1:
begin
isEn<='b0;
i<='b0;
end
endcase /**********************************************************/ assign SOS_en_sig=isEn; /**********************************************************/ endmodule
/**********************************************************
module name:sos_module.v
function: generate sos signal by yf.x
2014-11-07 **********************************************************/ module sos_module(
CLK,
RST_n,
Pin_out,
SOS_en_sig
); input CLK;
input RST_n;
input SOS_en_sig;
output Pin_out; /***********************************************************/
// DE2-115 use 50MHz oscillator,50M*0.001-1=49_999
parameter T1ms='d49_999; /**********************************************************/ reg [:]count1; //1ms counter always @(posedge CLK or negedge RST_n)
if(!RST_n)
count1<='d0;
else if(iscount && count1==T1ms)
count1<='d0;
else if(iscount)
count1<=count1+'b1;
else if(!iscount)
count1<='d0; /***********************************************************/ reg [:]count_ms; always @(posedge CLK or negedge RST_n)
if(!RST_n)
count_ms<='d0;
else if(iscount && count1==T1ms)
count_ms<=count_ms+'b1;
else if(!iscount)
count_ms<='d0; /***********************************************************/ reg iscount;
reg rPin_out;
reg [:]i; always @(posedge CLK or negedge RST_n)
if(!RST_n)
begin
iscount<='b0;
rPin_out<='b0;
i<='d0;
end
else
case(i) 'd0:
if(SOS_en_sig=='b1)
i<='d1; 'd1,
'd3,
'd5,
'd13,
'd15,
'd17: //short
if(count_ms=='d100)
begin
iscount<='b0;
rPin_out<='b0;
i<=i+'b1;
end
else
begin
iscount<='b1;
rPin_out='b1;
end 'd2,
'd4,
'd6,
'd8,
'd10,
'd12,
'd14,
'd16,
'd18: //interval
if(count_ms=='d50)
begin
iscount<='b0;
i<=i+'b1;
end
else
iscount<='b1; 'd7,
'd9,
'd11: //long
if(count_ms=='d300)
begin
iscount<='b0;
rPin_out<='b0;
i<=i+'b1;
end
else
begin
iscount<='b1;
rPin_out='b1;
end 'd19: //end
begin
rPin_out<='b0;
i<='b0;
end
endcase /*******************************************************************/ assign Pin_out=rPin_out; endmodule
/***********************************************************
module name: lab06_top.v
function: press a key, then trig SOS signal
pin assignments(for DE2_115):
---------------------------------------------
CLK--------------------------------CLOCK_50
RST_n------------------------------KEY[0]
Pin_in-----------------------------KEY[3]
Pin_out----------------------------LEDG[8] by yf.x
2014-11-08 ***********************************************************/ module lab06_top(
CLK,
RST_n,
Pin_in,
Pin_out
); input CLK;
input RST_n;
input Pin_in;
output Pin_out; /**************************************************/ wire Trig_sig; debounce_module u0(
.CLK(CLK),
.RST_n(RST_n),
.Pin_in(Pin_in),
.Pin_out(Trig_sig)
); /**************************************************/ wire SOS_en_sig; inter_control_module u1(
.CLK(CLK),
.RST_n(RST_n),
.Trig_sig(Trig_sig),
.SOS_en_sig(SOS_en_sig)
); /***************************************************/ sos_module u2(
.CLK(CLK),
.RST_n(RST_n),
.Pin_out(Pin_out),
.SOS_en_sig(SOS_en_sig)
); /***************************************************/ endmodule
完成的框图:

实验六结论:
单针对这个实验,设计可以简化,即去掉inter_control_module.v。但是这个模块可以提供更好的扩展性。
【黑金教程笔记之007】【建模篇】【Lab 06 SOS信号之二】—笔记的更多相关文章
- 【黑金教程笔记之006】【建模篇】【Lab 05 SOS信号之一】—笔记
sos_module.v是产生SOS信号的功能模块.即有次序的输出莫斯码:点.画.间隔.control_module.v是一个定时触发器,每一段时间使能sos_module.v. 模块: /***** ...
- Python笔记_第四篇_高阶编程_二次封装
1.二次封装: 二次封装其实就是对一个类或者一个方法进行二次的改造增加新的功能. 2.一个类的二次封装: 我们以一个进程为例,我们把Process这个库进行二次封装,增加一些功能,在调用. thoma ...
- 《Kafka权威指南》读书笔记-操作系统调优篇
<Kafka权威指南>读书笔记-操作系统调优篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 大部分Linux发行版默认的内核调优参数配置已经能够满足大多数应用程序的运 ...
- 【LaTeX】E喵的LaTeX新手入门教程(1)准备篇
昨天熄灯了真是坑爹.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇 [LaTeX]E喵的LaTeX新手入门教程(2)基础排版上一期测试答案1.大家一开始想到的肯定是\LaTeX{}er ...
- Pycharm新手教程,只需要看这篇就够了
pycharm是一款高效的python IDE工具,它非常强大,且可以跨平台,是新手首选工具!下面我给第一次使用这款软件的朋友做一个简单的使用教程,希望能给你带来帮助! 目前pycharm一共有两个版 ...
- 【转】寻找最好的笔记软件:海选篇 (v1.0)
原文网址:http://blog.sina.com.cn/s/blog_46dac66f01000b55.html 序言: 我见过的多数软件爱好者,无论是资深用户,还是初级用户,都有一个梦想:找到 ...
- Matlab 多个版本的安装包下载、安装和激活教程 + 多套数学建模视频教程
目录 1. 关键词 1.1. 说明 2. 下载地址 2.1. OneDrive高速云盘 2.1.1. 多版本的安装包 2.1.2. 多套数学建模的视频教程 2.2. 百度云 3. 安装教程 1. 关键 ...
- Redis 笔记 01:入门篇
Redis 笔记 01:入门篇 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
- tensorflow笔记(五)之MNIST手写识别系列二
tensorflow笔记(五)之MNIST手写识别系列二 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7455233.html ...
随机推荐
- Python()- 面向对象三大特性----封装
封装: [封装] 隐藏对象的属性和实现细节,仅对外提供公共访问方式.[好处] 1. 将变化隔离: 2. 便于使用:3. 提高复用性: 4. 提高安全性:[封装原则] 1. 将 ...
- codeforces 1041 c 乱搞
#include <bits/stdc++.h> using namespace std; struct po { int val; int id; }; po a[]; vector&l ...
- java的计时:毫秒、纳秒
System.currentTimeMillis()获取毫秒值,但是其精度依赖操作系统 想实现较为精确的毫秒,可以采用 System.nanoTime()/1000000L System.nanoTi ...
- Bag-of-words模型、TF-IDF模型
Bag-of-words model (BoW model) 最早出现在NLP和IR(information retrieval)领域. 该模型忽略掉文本的语法和语序, 用一组无序的单词(words) ...
- easyui英文提示变中文
近期玩JQuery easyUI,系统默认的日期和文本输入框提示英文.作为一个地道的中国人,是不是提示成中文.日期也显示成中文,是不是更人性化呢,下面为操作方法哦. 更改前效果 1 输入框提示为英文 ...
- Camera 模组
http://wenku.baidu.com/view/89d8c21014791711cc7917d5.html http://wenku.baidu.com/view/0cec54d5c1c708 ...
- maven导入dom4j以及jaxen.jar报java.lang.UnsupportedOperationException:错误
<dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> & ...
- C++常用的函数,好的博客文章整理,集锦
http://www.cnblogs.com/xianghang123/archive/2011/08/24/2152404.html c语言产生随机数的方法 http://blog.sina. ...
- 【iOS进阶】UIWebview加载搜狐视频,自动跳回客户端 问题解决
UIWebview加载搜狐视频,自动跳回搜狐客户端 问题解决 当我们用UIWebview(iOS端)加载网页视频的时候,会发现,当真机上有搜狐客户端的时候,会自动跳转到搜狐客户端进行播放,这样的体验对 ...
- 查看android-support-v4.jar引出的问题
1.前面博文里也写过如何关联android-support-v4.jar的源码 今天新项目用上述方法的时候,竟然不成功..来回反复试了很长时间,最后发现 新建项目,会自动引用一个类库(自动新建的..) ...