【黑金教程笔记之006】【建模篇】【Lab 06 SOS信号之一】—笔记

sos_module.v是产生SOS信号的功能模块。即有次序的输出莫斯码:点、画、间隔。control_module.v是一个定时触发器,每一段时间使能sos_module.v。

模块:

  1 /**********************************************************
  2 module name:sos_module.v
  3 function: generate sos signal
  4
  5 by yf.x
  6 2014-11-07
  7
  8 **********************************************************/
  9
 10 module sos_module(
 11 CLK,
 12 RST_n,
 13 Pin_out,
 14 SOS_en_sig
 15 );
 16
 17 input CLK;
 18 input RST_n;
 19 input SOS_en_sig;
 20 output Pin_out;
 21
 22 /***********************************************************/
 23 // DE2-115 use 50MHz oscillator,50M*0.001-1=49_999
 24 parameter T1ms=16‘d49_999;
 25
 26 /**********************************************************/
 27
 28 reg [15:0]count1; //1ms counter
 29
 30 always @(posedge CLK or negedge RST_n)
 31 if(!RST_n)
 32   count1<=16‘d0;
 33 else if(iscount && count1==T1ms)
 34   count1<=16‘d0;
 35 else if(iscount)
 36   count1<=count1+1‘b1;
 37 else if(!iscount)
 38   count1<=16‘d0;
 39
 40 /***********************************************************/
 41
 42 reg [9:0]count_ms;
 43
 44 always @(posedge CLK or negedge RST_n)
 45 if(!RST_n)
 46   count_ms<=10‘d0;
 47 else if(iscount && count1==T1ms)
 48   count_ms<=count_ms+1‘b1;
 49 else if(!iscount)
 50   count_ms<=10‘d0;
 51
 52 /***********************************************************/
 53
 54 reg iscount;
 55 reg rPin_out;
 56 reg [4:0]i;
 57
 58 always @(posedge CLK or negedge RST_n)
 59 if(!RST_n)
 60 begin
 61   iscount<=1‘b0;
 62   rPin_out<=1‘b0;
 63   i<=5‘d0;
 64 end
 65 else
 66   case(i)
 67
 68     5‘d0:
 69      if(SOS_en_sig==1‘b1)
 70        i<=5‘d1;
 71
 72      5‘d1,
 73      5‘d3,
 74      5‘d5,
 75      5‘d13,
 76      5‘d15,
 77      5‘d17:       //short
 78      if(count_ms==10‘d100)
 79      begin
 80        iscount<=1‘b0;
 81         rPin_out<=1‘b0;
 82         i<=i+1‘b1;
 83      end
 84      else
 85      begin
 86        iscount<=1‘b1;
 87        rPin_out=1‘b1;
 88      end
 89
 90     5‘d2,
 91      5‘d4,
 92      5‘d6,
 93      5‘d8,
 94      5‘d10,
 95      5‘d12,
 96      5‘d14,
 97      5‘d16,
 98      5‘d18:      //interval
 99      if(count_ms==10‘d50)
100     begin
101       iscount<=1‘b0;
102       i<=i+1‘b1;
103     end
104     else
105       iscount<=1‘b1;
106
107     5‘d7,
108      5‘d9,
109      5‘d11:  //long
110     if(count_ms==10‘d300)
111     begin
112       iscount<=1‘b0;
113         rPin_out<=1‘b0;
114         i<=i+1‘b1;
115      end
116      else
117      begin
118        iscount<=1‘b1;
119        rPin_out=1‘b1;
120      end
121
122      5‘d19:  //end
123      begin
124        rPin_out<=1‘b0;
125         i<=1‘b0;
126      end
127     endcase
128
129 /*******************************************************************/
130
131 assign Pin_out=rPin_out;
132
133 endmodule
134
135
136
137
138   
 1 /************************************************************
 2 module name:control_module.v
 3 function:generate a enable signal at each 3 second.
 4
 5 by yf.x
 6 2014-11-07
 7
 8 ************************************************************/
 9
10 module control_module(
11 CLK,
12 RST_n,
13 SOS_en_sig
14 );
15
16 input CLK;
17 input RST_n;
18 output SOS_en_sig;
19
20 /***********************************************************/
21 // 50MHz*3S-1=149_999_999
22 parameter T3s=28‘d149_999_999;
23
24 /***********************************************************/
25
26 reg isEn;
27 reg [27:0] count1;
28
29 always @(posedge CLK or negedge RST_n)
30 if(!RST_n)
31 begin
32   isEn<=1‘b0;
33   count1<=28‘d0;
34 end
35 else if(count1==T3s)
36 begin
37   isEn<=1‘b1;
38   count1<=28‘d0;
39 end
40 else
41 begin
42   isEn<=1‘b0;
43   count1<=count1+1‘b1;
44 end
45
46 /************************************************************/
47
48 assign SOS_en_sig=isEn;
49
50 /************************************************************/
51
52 endmodule
53
54   
 1 /********************************************************************
 2 module name: sos_generator_module.v
 3 function: top module.
 4
 5 pin assignmets(for DE2-115):
 6 --------------------------------------------------
 7 CLK----------------------------------CLOCK_50
 8 RST_n--------------------------------KEY[0]
 9 Pin_out------------------------------LEDG[8]
10 --------------------------------------------------
11
12 by yf.x
13 2014-11-07
14
15 ********************************************************************/
16
17 module sos_generator_module(
18 CLK,
19 RST_n,
20 Pin_out
21 );
22
23 input CLK;
24 input RST_n;
25 output Pin_out;
26
27 /*********************************************************************/
28
29 wire SOS_en_sig;
30
31 control_module u0(
32 .CLK(CLK),
33 .RST_n(RST_n),
34 .SOS_en_sig(SOS_en_sig)
35 );
36
37 wire pin_out_wire;
38
39 sos_module u1(
40 .CLK(CLK),
41 .RST_n(RST_n),
42 .SOS_en_sig(SOS_en_sig),
43 .Pin_out(pin_out_wire)
44 );
45
46 /********************************************************************/
47
48 assign Pin_out=pin_out_wire;
49
50 /********************************************************************/
51
52 endmodule

模块框图:

实验五说明:

实验五中control_module.v每隔3秒产生一个使能信号,触发sos_module.v产生sos信号。

时间: 2024-11-05 05:33:22

【黑金教程笔记之006】【建模篇】【Lab 06 SOS信号之一】—笔记的相关文章

【黑金教程笔记之006】【建模篇】【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接收到这个高脉冲信号,它会转发产生一

[转] 贺完结!CS231n官方笔记授权翻译总集篇发布

哈哈哈!我们也是不谦虚,几个"业余水平"的网友,怎么就"零星"地把这件事给搞完了呢!总之就是非常开心,废话不多说,进入正题吧! CS231n简介 CS231n的全称是CS231n: Convolutional Neural Networks for Visual Recognition,即面向视觉识别的卷积神经网络.该课程是斯坦福大学计算机视觉实验室推出的课程.需要注意的是,目前大家说CS231n,大都指的是2016年冬季学期(一月到三月)的最新版本. 课程描述:请

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp

树莓派玩耍笔记3 -- LCD1602显示篇

LCD1602是一块成本低廉的输出设备,它有着体积小.操作简单.功耗低等优点,所以在一些DIY 产品上会用它来输出一些信息.昨天在使用时,虽然借鉴网上的资源,但是仍然有遇到一些问题,在这里写出来以便大家遇到时能够正确处理. 一.LCD1602 相关[1] 工业字符型液晶,能够同时显示16x02即32个字符.(16列2行) 1.1 管脚 1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线. 引脚 符号 功能说明 1 VSS 一般接地 2 VDD 接电源(+5V

现代C++学习笔记之二入门篇2,数据转换

static_cast:    这种强制转换只会在编译时检查. 如果编译器检测到您尝试强制转换完全不兼容的类型,则static_cast会返回错误. 您还可以使用它在基类指针和派生类指针之间强制转换,但是,编译器在无法分辨此类转换在运行时是否是安全的. dynamic_cast: dynamic_cast在运行时检查基类指针和派生类指针之间的强制转换. dynamic_cast 是比 static_cast 更安全的强制类型转换,但运行时检查会带来一些开销. const_cast:    con

第十七篇:博采众长--初探WDDM驱动学习笔记(七)

基于WDDM驱动的DirectX视频加速重定向框架设计与实现 现在的研究生的论文, 真正质量高的, 少之又少, 开题开得特别大, 动不动就要搞个大课题, 从绪论开始到真正自己所做的内容之间, 是东拼西凑地抄概念, 抄公式, 达到字数篇幅的要求, 而自己正真做了什么, 有哪些实际感受, 做出的内容, 相比前面的东拼西凑就几点内容, 之后就草草结束, 步入感谢的段落. 原因不光只有学生自己, 所谓的读研, 如果没有一个环境, 学生有再大的愿望, 再强的毅力, 到头来也只是空无奈. 有些导师要写书,

【LaTeX】E喵的LaTeX新手入门教程(1)准备篇

昨天熄灯了真是坑爹.前情回顾[LaTeX]E喵的LaTeX新手入门教程(1)准备篇 [LaTeX]E喵的LaTeX新手入门教程(2)基础排版上一期测试答案1.大家一开始想到的肯定是\LaTeX{}er.其实\LaTeX er也可以的.2.\LaTeX{} er或\LaTeX\ er数学模式现在我们打算在文档中插入一些数学公式什么的了:按照正常的情况来说,数学公式里面的字符一般都是斜体,而我们要用\textit来一点点把需要变的文字变成斜体这显然是一件极其坑爹的事情.TeX的创造者高爷爷表示他搞T

[Aaronyang] 写给自己的WPF4.5 笔记11[自定义控件-AyImageButton篇 1/4]

我的文章一定要对读者负责-否则不是好文章  ----       www.ayjs.net  aaronyang技术分享 文章导航: 介绍vs2013 WPF开发,属性代码相关技巧 实战AyImageButton 1.0细用慢讲,学会用户控件,依赖属性,属性回调事件 诞生AyImageButton 1.1 支持 控件简单写法,支持自定义AyImageButton写法,提供详细的API 效果图: AyImageButton记录 源码下载:http://pan.baidu.com/s/1eQlHly

现代C++学习笔记之二入门篇1

现代 C++ 强调: 基于堆栈的范围,而非堆或静态全局范围. 自动类型推理,而非显式类型名称. 智能指针而不是原始指针. std::string 和 std::wstring 类型(请参见 <string>),而非原始 char[] 数组. 标准模板库 (STL) 容器(例如 vector.list 和 map),而非原始数组或自定义容器. 请参见 <vector>.<list> 和 <map>. STL 算法,而非手动编码的算法. 异常,可报告和处理错误条