一个小程序,用asc码输出自己的名字。要求是,a~z两路输入,输出了一个完整的拼音之后还需要输出一个空格。—— 信息硬件过滤的雏形。

module search_word  (
clock ,
reset ,
d0,
d1,
word
);
//---------------------------------------------------------
input clock ,reset;
input [:] d0 ; //A=65 M= 77
input [:] d1 ; //N = 78 Z = 90
//----------------------------------------------------------
output reg [:] word ; // pengxiaoen
`define P 'd80 // D1
`define E 'd69 //D0
`define N 'd78 //D0
`define G 'd71 //D0
`define X 'd88 //D1
`define I 'd73 //D0
`define A 'd65 //D0
`define O 'd79 //D1
`define null 'd32 //en `define S0 'd0
`define S1 'd1
`define S2 'd2
`define S3 'd3
`define S4 'd4
`define S5 'd5
`define S6 'd6
`define S7 'd7
`define S8 'd8
`define S9 'd9
`define S10 'd10 reg [:] current_state ;
reg [:] next_state ;
reg data_sel ; // 路由选通信号 1: 输出是d1 0 : 输出是d0
reg enable ; // 输出使能信号 1 : 输出空格 0:输出字母
reg [:] data_reg ; //数据缓存,缓存所选数据 always @ (posedge clock or negedge reset )
if (!reset ) current_state <= 'd0 ;
else current_state <= next_state ; //always @ (*)
always @ (posedge clock or negedge reset )
begin
if(!reset)
next_state <= 'd0 ;
else
begin
case (next_state)
`S0 : begin
if (data_reg == `P)
next_state <= `S1;
else next_state <= `S0 ; // 等待P 的到来
end
`S1 : begin
if (data_reg == `E)
next_state <= next_state + 'd1;
else next_state <= `S1 ; // 等待E 的到来
end
`S2 : begin
if (data_reg == `N)
next_state <= `S3;
else next_state <= `S2 ; // 等待N 的到来
end
`S3 : begin
if (data_reg == `G)
next_state <= `S4;
else next_state <= `S3 ; // 等待G 的到来
end
`S4 : begin
if (data_reg == `X)
next_state <= `S5;
else next_state <= `S4; // 等待X 的到来
end
`S5 : begin
if (data_reg == `I)
next_state <= `S6;
else next_state <= `S5; // 等待I 的到来
end
`S6 : begin
if (data_reg == `A)
next_state <= `S7;
else next_state <= `S6 ; // 等待A 的到来
end
`S7 : begin
if (data_reg == `O)
next_state <= `S8;
else next_state <= `S7 ; // 等待O 的到来
end
`S8 : begin
if (data_reg == `E)
next_state <= `S9;
else next_state <= `S8 ; // 等待E的到来
end
`S9 : begin
if (data_reg == `N)
next_state <= `S10;
else next_state <= `S9 ; // 等待N的到来
end
`S10 : begin
next_state = `S0 ;
end
default : next_state <= `S0 ;
endcase
end
end always @ (posedge clock or negedge reset )
begin
if(!reset)
begin
data_sel <= 'd0 ;
enable <= 'd0 ;
end
else
begin
case (current_state)
`S0 : begin
enable <= 'd1; //0: 输出字母 1 : 输出空格
data_sel <= 'd1 ; // P属于通道1
end
`S1 : begin
enable <= 'd0 ;
data_sel <= 'd0; //E 属于通道 0
end
`S2 : begin
enable <= 'd0 ;
data_sel <= 'd1 ; // N 属于通道1
end
`S3 : begin
enable <= 'd0; // 输出字母
data_sel <= 'd0 ; // G 属于通道0 end
`S4 : begin
enable <= 'd1 ; //输出空格
data_sel <= 'd1 ; //X 属于通道1
end
`S5 : begin
enable <= 'd0 ;
data_sel <= 'd0 ; // I 属于通道0
end
`S6 : begin
enable <= 'd0 ;
data_sel <= 'd0 ; // A 为通道0
end
`S7 : begin
enable <= 'd0 ;
data_sel <= 'd1 ; // O 属于通道1
end
`S8 : begin
enable <= 'd1 ; //输出空格
data_sel <= 'd0 ; // E 属于通道0
end
`S9 : begin
enable <= 'd0 ; //
data_sel <= 'd1 ; // N 属于通道 1
end
`S10 : begin
enable <='d0 ; // 输出
data_sel <= 'd1; // P 属于通道1
end
endcase
end
end always @ (posedge clock or negedge reset )
// always @ (*)
begin
if (!reset ) data_reg <= 'd0 ;
else
begin
if (data_sel) data_reg <= d1 ;
else data_reg <= d0 ;
end
end always @ (posedge clock or negedge reset )
begin
if(!reset) word <= 'd0 ;
else if(!enable)
begin
case (current_state)
`S0 : word <= `null;
`S1 : word <= `P;
`S2 : word <= `E;
`S3 : word <= `N;
`S4 : word <= `G;
`S5 : word <= `X;
`S6 : word <= `I;
`S7 : word <= `A;
`S8 : word <= `O;
`S9 : word <= `E;
`S10 : word <= `N;
default : word <= 'd0 ;
endcase
end
else word <= 'b010_0000;
end endmodule

附上testbench ,亲测可用

`timescale  1ns/1ps 

module search_word_tb  ;
reg clock ,reset ;
reg [:] d0 ,d1 ;
wire [:]word ; integer i ,j ; always # clock = ~clock ; initial
begin
clock = ; reset = ;
# reset = ; end initial
begin
d0 = 'd0 ;
# ;
repeat ()
begin
for (i = ;i <= ; i=i+)
begin
# d0 = 'd65 + i ;
end
end
end initial
begin
d1 = 'd0 ;
# ;
repeat ()
begin
for (j = ;j <= ; j=j+)
begin
# d1 = 'd78 + j;
end
end
end search_word myu0 (
.clock (clock ),
.reset (reset ),
.d0(d0),
.d1(d1),
.word (word )
); endmodule

search_word的更多相关文章

  1. JS实现选择不同select标签option值的验证

    js实现不同select标签option值的验证 功能描述: 选择中文时,匹配中文的正则表达式,选择英文选项是匹配英文的表达式,并且有对应的提示信息. html代码片段: <select id= ...

  2. vi 使用

      1)命令 gf  ,可以从光标指定的文件位置打开对应文件 :bd回来 2)http://www.cnblogs.com/wangkangluo1/archive/2012/04/12/244495 ...

  3. Browser设置搜索引擎

    Browser设置搜索引擎,在com.android.browser.preferences.GeneralPreferencesFragment中加载R.xml.general_preference ...

  4. 从URL中获取搜索关键字

    public string GetSearchKeyWords(string strQuery) { string result = ""; string pattern = &q ...

  5. Linux Shell编程(5)——shell特殊字符(下)

    {}代码块[花括号]. 这个结构也是一组命令代码块,事实上,它是匿名的函数.然而与一个函数所不同的,在代码块里的变量仍然能被脚本后面的代码访问. bash$ { local a;      a=123 ...

  6. Trie 字典树

    字典树是哈希树的变种, 它采用公用前缀的方式来提高效率, 刚开始以为公用前缀, 空间会节省, 后来想想, 空间也不是节省, 因为每一个都有26个指针(这里假设都是小写字母的话), 不过他的时间复杂度是 ...

  7. 大约SQL/NoSQL数据库搜索/思考查询

    转载请注明出处:jiq•钦's technical Blog Hbase特征: 近期在学习Hbase.Hbase基于行健是建立了索引的,查询速度会很快,全然实时. 可是Hbase要基于行健之外的字段进 ...

  8. linux_shell 特殊符号的介绍

    linux_shell 特殊符号的介绍 2011-12-17 17:54:07 分类: 原文地址:linux_shell 特殊符号的介绍 作者:xu_liuzhen linux_shell 特殊符号的 ...

  9. ajax分页实现(php)

    ajax分页实现(php) 使用jquery.pagination.js插件 引入js文件.css文件 <link rel="stylesheet" href="/ ...

随机推荐

  1. django分页linaro-django-pagination

    1.安装linaro-django-pagination settings INSTALLED_APPS = ( # ... 'linaro_django_pagination', ) MIDDLEW ...

  2. eclipse编译错误

    ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 JDWP exit error AGE ...

  3. COB封装的优势

    随着固态照明技术的不断进步,COB(chip-on-board)封装技术得到越来越多的重视,由于COB光源有热阻低,光通量密度高,眩光少,发光均匀等特性,在室内外照明灯具中得到了广泛的应用,如筒灯,球 ...

  4. 卡特兰数(Catalan)简介

    Catalan序列是一个整数序列,其通项公式是 h(n)=C(2n,n)/(n+1) (n=0,1,2,...) 其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, ...

  5. spring中基础核心接口总结

    spring中基础核心接口总结理解这几个接口,及其实现类就可以快速了解spring,具体的用法参考其他spring资料 1.BeanFactory最基础最核心的接口重要的实现类有:XmlBeanFac ...

  6. C# windows ce编程-----我的第一次

    最近公司要求开发抄表软件,软件分为PC端和手持终端(简称HHU),HHU是基于英文版的windows ce6.0操作系统,开发环境要求VS2005+SQLite数据库,开发语言为C#,因为是第一次基本 ...

  7. Linux常用命令总结——文件管理

    Linux中的目录 路径:也就是linux中的目录(文件夹)有绝对路径和相对路径 根目录:/ 用户主目录(home directory):位于/home目录下,用户登录时 工作目录(working d ...

  8. 【在网页中获取截图数据】Chrome和Firefox下的实战经验

    [转载自我在segmentfault的专栏:https://segmentfault.com/a/1190000004584071] 最近在实现一个功能,需求如下: 前提:当前页面无弹窗 页面任意位置 ...

  9. Windows 无法启动xx服务 错误1053:服务没有及时响应启动或控制请求

    症状:win7系统的很多系统关键服务,启动不了,双击该服务也弹不了操作框,系统服务是设置为自动 的,但是就是启动不了,在本地服务窗口中只能启动该服务,但是双击会弹不了窗口,你点启动后会出现错误提示10 ...

  10. 解决Jedis数据读取乱码问题

    现象 同一套代码,同一个数据源,不同的操作系统,在OSX上数据提取编码正常,而Ubuntu上拉取数据乱码,数据拉取代码如下. @Override public List<String> m ...