进阶项目(12)PS2键盘驱动程序设计讲解

您所在的位置:网站首页 ps2接口需要驱动吗 进阶项目(12)PS2键盘驱动程序设计讲解

进阶项目(12)PS2键盘驱动程序设计讲解

2023-08-16 08:05| 来源: 网络整理| 查看: 265

/****************************************************          

 *   Engineer      :   梦翼师兄

 *   QQ             :   761664056

 *   The module function: 测试ps2_scan模块

*****************************************************/

000 `timescale 1ns/1ps //定义时间单位和精度

001

002 module ps2_scan_tb;

003     //系统输入

004     reg clk;//系统输入时钟

005     reg rst_n;//系统复位

006     reg ps2_clk;//ps2的时钟

007     reg ps2_data_in;//ps2的数据

008     //系统输出

009     wire [7:0] ps2_data_out;//按键的通、断码

010     wire valid;//通、断码有效信号

011     

012     initial begin

013         clk = 1;

014         rst_n = 0;

015         ps2_clk = 1;

016         ps2_data_in = 1; 

017         #200.1

018         rst_n = 1;

019         //数字“1”的通码

020         ps2_data_in = 0;//起始位“0”

021         #60

022         ps2_clk = 0;

023         #120

024         ps2_clk = 1;

025         #60

026         ps2_data_in = 1;//“1”

027         #60

028         ps2_clk = 0;

029         #120

030         ps2_clk = 1;

031         #60

032         ps2_data_in = 0;//“0”

033         #60

034         ps2_clk = 0;

035         #120

036         ps2_clk = 1;

037         #60

038         ps2_data_in = 0;//“0”

039         #60

040         ps2_clk = 0;

041         #120

042         ps2_clk = 1;

043         #60

044         ps2_data_in = 1;//“1”

045         #60

046         ps2_clk = 0;

047         #120

048         ps2_clk = 1;

049         #60

050         ps2_data_in = 0;//“0”

051         #60

052         ps2_clk = 0;

053         #120

054         ps2_clk = 1;

055         #60

056         ps2_data_in = 1;//“1”

057         #60

058         ps2_clk = 0;

059         #120

060         ps2_clk = 1;

061         #60

062         ps2_data_in = 1;//“1”

063         #60

064         ps2_clk = 0;

065         #120

066         ps2_clk = 1;

067         #60

068         ps2_data_in = 0;//“0”

069         #60

070         ps2_clk = 0;

071         #120

072         ps2_clk = 1;

073         #60

074         ps2_data_in = 1;//奇偶校验位“1”

075         #60

076         ps2_clk = 0;

077         #120

078         ps2_clk = 1;

079         #60

080         ps2_data_in = 1;//停止位“1”

081         #60

082         ps2_clk = 0;

083         #120

084         ps2_clk = 1;

085         #2000

086         //断码中“f0”

087         ps2_data_in = 0;//起始位“0”

088         #60

089         ps2_clk = 0;

090         #120

091         ps2_clk = 1;

092         #60

093         ps2_data_in = 0;//“0”

094         #60

095         ps2_clk = 0;

096         #120

097         ps2_clk = 1;

098         #60

099         ps2_data_in = 0;//“0”

100         #60

101         ps2_clk = 0;

102         #120

103         ps2_clk = 1;

104         #60

105         ps2_data_in = 0;//“0”

106         #60

107         ps2_clk = 0;

108         #120

109         ps2_clk = 1;

110         #60

111         ps2_data_in = 0;//“0”

112         #60

113         ps2_clk = 0;

114         #120

115         ps2_clk = 1;

116         #60

117         ps2_data_in = 1;//“1”

118         #60

119         ps2_clk = 0;

120         #120

121         ps2_clk = 1;

122         #60

123         ps2_data_in = 1;//“1”

124         #60

125         ps2_clk = 0;

126         #120

127         ps2_clk = 1;

128         #60

129         ps2_data_in = 1;//“1”

130         #60

131         ps2_clk = 0;

132         #120

133         ps2_clk = 1;

134         #60

135         ps2_data_in = 1;//“1”

136         #60

137         ps2_clk = 0;

138         #120

139         ps2_clk = 1;

140         #60

141         ps2_data_in = 1;//奇偶校验位“1”

142         #60

143         ps2_clk = 0;

144         #120

145         ps2_clk = 1;

146         #60

147         ps2_data_in = 1;//停止位“1”

148         #60

149         ps2_clk = 0;

150         #120

151         ps2_clk = 1;

152         #2000

153         //数字“1”的通码

154         ps2_data_in = 0;//起始位“0”

155         #60

156         ps2_clk = 0;

157         #120

158         ps2_clk = 1;

159         #60

160         ps2_data_in = 1;//“1”

161         #60

162         ps2_clk = 0;

163         #120

164         ps2_clk = 1;

165         #60

166         ps2_data_in = 0;//“0”

167         #60

168         ps2_clk = 0;

169         #120

170         ps2_clk = 1;

171         #60

172         ps2_data_in = 0;//“0”

173         #60

174         ps2_clk = 0;

175         #120

176         ps2_clk = 1;

177         #60

178         ps2_data_in = 1;//“1”

179         #60

180         ps2_clk = 0;

181         #120

182         ps2_clk = 1;

183         #60

184         ps2_data_in = 0;//“0”

185         #60

186         ps2_clk = 0;

187         #120

188         ps2_clk = 1;

189         #60

190         ps2_data_in = 1;//“1”

191         #60

192         ps2_clk = 0;

193         #120

194         ps2_clk = 1;

195         #60

196         ps2_data_in = 1;//“1”

197         #60

198         ps2_clk = 0;

199         #120

200         ps2_clk = 1;

201         #60

202         ps2_data_in = 0;//“0”

203         #60

204         ps2_clk = 0;

205         #120

206         ps2_clk = 1;

207         #60

208         ps2_data_in = 1;//奇偶校验位“1”

209         #60

210         ps2_clk = 0;

211         #120

212         ps2_clk = 1;

213         #60

214         ps2_data_in = 1;//停止位“1”

215         #60

216         ps2_clk = 0;

217         #120

218         ps2_clk = 1;

219     end

220     

221     always # 10 clk = ~clk;//50M的时钟

222     

223      ps2_scan  ps2_scan (

224                     .clk(clk), //系统输入时钟

225                     .rst_n(rst_n),//系统复位

226                     .ps2_data_in(ps2_data_in),//ps2的数据

227                     .ps2_data_out(ps2_data_out),//按键的通、断码

228                     .ps2_clk(ps2_clk),//ps2的时钟

229                     .valid(valid)//通、断码有效信号

230                 );

231

232 endmodule 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3