⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 data_scanc.v

📁 FPGA的PS2口接口程序
💻 V
字号:
 /*
	本实验下载SOF后数码管显示0080,有键按下后将有数值变化
	可看到数码管高2位显示扫描码,低2位显示ASCII码。
	
	在采集扫描码时如果有一位错位,那么后面的码都会出错,
	在数码管高2位会显示出错误的扫描码,而低2位一直显示80没有变化。
	因为出现了错位,如果得不到F0断码的开始标志,则转换器会认为没有键按下,
	会一直显示80,直到F0到来。这时可以按reset进行复位更正。
	
	*/


	
module data_scanC
	( sys_clk,
	k_data,
	k_clock,
	reset,
	data,
	PA,
	ZHJS
	);
	input sys_clk;
	input k_data;
	input k_clock;
	input reset;
	output [7:0] data;
	inout  [7:0] PA;
	inout  ZHJS;
	
	reg  [11:0]  tmp;
	reg  now_kbclk, pre_kbclk;   
	wire  ZHJS;
	reg  [3:0] counter ;
	wire  enable;
	
	always @(posedge sys_clk or negedge reset)
	begin
	   if(!reset) begin
	     counter <= 0;
	     tmp[11:0] <= 0;
	   end
	   else begin
	     pre_kbclk <= now_kbclk;
	     now_kbclk <= k_clock;
	     if({pre_kbclk , now_kbclk}==2'b01) //键盘时钟上升沿判断
	     begin
		   tmp[counter] <= k_data;
		   if(counter == 4'd11) 
			  counter <= 4'd1;
			else 
			  counter <= counter + 1'b1;
		 end
	   end 
	end
	assign ZHJS = (counter == 4'd11) ? 1'b0 : 1'b1;//完成
	assign enable = (counter > 4'd1 && counter <4'd10 ) ? 1'b1:1'b0;
	
	assign PA = enable ? 8'b0000_0000 : tmp[8:1];
	assign data = PA;
	endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -