search_word
一个小程序,用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的更多相关文章
- JS实现选择不同select标签option值的验证
js实现不同select标签option值的验证 功能描述: 选择中文时,匹配中文的正则表达式,选择英文选项是匹配英文的表达式,并且有对应的提示信息. html代码片段: <select id= ...
- vi 使用
1)命令 gf ,可以从光标指定的文件位置打开对应文件 :bd回来 2)http://www.cnblogs.com/wangkangluo1/archive/2012/04/12/244495 ...
- Browser设置搜索引擎
Browser设置搜索引擎,在com.android.browser.preferences.GeneralPreferencesFragment中加载R.xml.general_preference ...
- 从URL中获取搜索关键字
public string GetSearchKeyWords(string strQuery) { string result = ""; string pattern = &q ...
- Linux Shell编程(5)——shell特殊字符(下)
{}代码块[花括号]. 这个结构也是一组命令代码块,事实上,它是匿名的函数.然而与一个函数所不同的,在代码块里的变量仍然能被脚本后面的代码访问. bash$ { local a; a=123 ...
- Trie 字典树
字典树是哈希树的变种, 它采用公用前缀的方式来提高效率, 刚开始以为公用前缀, 空间会节省, 后来想想, 空间也不是节省, 因为每一个都有26个指针(这里假设都是小写字母的话), 不过他的时间复杂度是 ...
- 大约SQL/NoSQL数据库搜索/思考查询
转载请注明出处:jiq•钦's technical Blog Hbase特征: 近期在学习Hbase.Hbase基于行健是建立了索引的,查询速度会很快,全然实时. 可是Hbase要基于行健之外的字段进 ...
- linux_shell 特殊符号的介绍
linux_shell 特殊符号的介绍 2011-12-17 17:54:07 分类: 原文地址:linux_shell 特殊符号的介绍 作者:xu_liuzhen linux_shell 特殊符号的 ...
- ajax分页实现(php)
ajax分页实现(php) 使用jquery.pagination.js插件 引入js文件.css文件 <link rel="stylesheet" href="/ ...
随机推荐
- eclipse设置web项目发布到tomcat根目录下
如果已经将项目绑定到服务器了,那就先删除服务器. 重新添加项目进服务器,双击 修改下面Server Locations到tomcat目录下 顺带可以修改下右上角的超时设置 再点击下方 这样就可以了.
- Move WriteBuffer ReadBuffer String
在实际编程中,经常会用到Buffer,当string作为Buffer传值时需要注意的是 1, string的值的起始索引是1,千万记住! 2, 有时候需要先告诉系统去开辟出内存空间,用SetLengt ...
- Curling 2.0(dfs回溯)
Curling 2.0 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15567 Accepted: 6434 Desc ...
- word中创建文本框
word中创建文本框 在插入中点击"文本框"选项卡,例如以下图所看到的: 手工加入自己想要的文本框格式,然后选择所创建的文本框,在工具栏处会发现多了一 ...
- Sublime 操作技巧
吐槽一下:刚下载的subime不是等宽字体,空格.表达.字母i什么的都很窄,看着不方便: 根据网上说的换成等宽字体,试了好多种字体,字体变了.但宽度没变. 然后有装了soda,和相应的color-th ...
- tcpdump使用技巧
tcpdump使用技巧 http://www.veryarm.com/1751.html
- 个人自建网店(WordPress WooCommerce on SAE)集成支付宝支付
插件: Alipay For WooCommerce 到支付宝账户的商家服务提出申请: https://b.alipay.com/order/serviceIndex.htm 在"在线签约- ...
- Android——用户登陆及用户名和密码的保存
Android——用户登陆及用户名和密码的保存 在之前的学习过程中已经将Android学习完了,但是在后面将近一年的时间里都没有进行过Android开发,所以对Android的所有的知识点又有点忘 ...
- yii配置
一.在config/web.php中添加如下代码(开启debug工具和gii工具) if (YII_ENV_DEV) { // configuration adjustments for 'dev' ...
- vagrant 入门4
7. 打包 Packaging , 8080 end 2. 打包Project $ vagrant package --vagrantfile Vagrantfile.pkg 8. 打包完成后,在工程 ...