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

📄 ham_code_rt.v

📁 HAMMING CODE在偵錯及更正的原理實現
💻 V
字号:
`timescale 1ns/1ns        
                          
module Ham_Code_RT();
//input	signal                   
reg 		clk,rst;                              
reg		req;        
reg	[3:0]	datain;     
reg	[2:0]	cin;        
                            
//output signal             
wire	[3:0]	dataout;    
wire		ack;        
//**********************************************************
//		1111	f	1110	=> 	e
//		1110	e	1110	=> 	f
//		1101	d	1100	=> 	c
//		1100	c	1101	=>	d
//		1011	b	1010	=>	a
//		1010	a	1011	=>	b
//		1001	9	1000	=>	8
//		1000	8	1001	=>	9
//		0111	7	0110	=>	7
//		0110	6	0111	=>	6
//		0101	5	0100	=>	4
//		0100	4	0101	=>	5
//		0011	3	0010	=>	2
//		0010	2	0011	=>	3
//		0001	1	0000	=>	0
//		0000	0	0001	=>	1
//*************************************************************

initial                                                                             
begin                                                   
#10 		clk  	<= 0;                           
		rst  	<= 0; 
		req	<= 0;  
#100		rst	<= 1; 		                        
#200		req	<= 1'b1;                         
		datain 	<= 4'he;//f 
		cin	<= 3'h7;//7                    
#100		                       
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'hf;//e
		cin     <= 3'h0;//0                     
#100		                          
		req  	<= 1'b0;        		
#200		req	<= 1'b1;                         
		datain 	<= 4'hc;//d
		cin	<= 3'h4;//4                      
#100		                         
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'hd;//c 
		cin     <= 3'h3333;//3                    
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'ha;//b
		cin	<= 3'h2;//2                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'hb;//a
		cin	<= 3'h5;//5                     
#100		                           
		req  	<= 1'b0;        		
#200		req	<= 1'b1;                         
		datain 	<= 4'h8;//9
		cin 	<= 3'h1;//1                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'h9;//8
		cin	<= 3'h6;//6                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'h6;//7
		cin	<= 3'h1;//1                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'h7;//6
		cin	<= 3'h6;//6                     
#100		           		
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'h4;//5
		cin	<= 3'h2;//2                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'h5;//4
		cin	<= 3'h5;//5                     
#100		
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'h2;//3
		cin	<= 3'h4;//4                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'h3;//2
		cin	<= 3'h3;//3                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'h0;//1
		cin	<= 3'h7;//7                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 4'h1;//0
		cin	<= 3'h0;//0   		        
#100		      		        
		req  	<= 1'b0;   		        
//***********************************correct datain************************
#200		req	<= 1'b1;        
		datain 	<= 4'hf;//f     
		cin	<= 3'h7;//7     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'he;//e     
		cin     <= 3'h0;//0     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'hd;//d     
		cin	<= 3'h4;//4     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'hc;//c     
		cin     <= 3'h3;//3     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'hb;//b     
		cin	<= 3'h2;//2     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'ha;//a     
		cin	<= 3'h5;//5     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'h9;//9     
		cin 	<= 3'h1;//1     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'h8;//8     
		cin	<= 3'h6;//6     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'h7;//7     
		cin	<= 3'h1;//1     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'h6;//6     
		cin	<= 3'h6;//6     
#100		           		
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'h5;//5     
		cin	<= 3'h2;//2     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'h4;//4     
		cin	<= 3'h5;//5     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'h3;//3     
		cin	<= 3'h4;//4     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'h2;//2     
		cin	<= 3'h3;//3     
#100		                        
		req  	<= 1'b0;        		                                        
#200		req	<= 1'b1;                          
		datain 	<= 4'h1;//1                       
		cin	<= 3'h7;//7                       
#100		                                          
		req  	<= 1'b0;                          
#200		req	<= 1'b1;                          
		datain 	<= 4'h0;//0                       
		cin	<= 3'h0;//0   	                  
#100		      		                          
		req  	<= 1'b0;   
		
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'h3;//0     
		cin	<= 3'h7;//0   			
#100		      		        		
		req  	<= 1'b0;   			
			
#500000 $stop;                        
end                                   
                                      
initial                               
begin                                 
     	$dumpfile("Ham_Code_RT.vcd"); 
        $dumpvars(0,Ham_Code_RT);     
#500000 $finish;	              
                                      
end //end initial                     
                                      
                                                           
//*********************************************************
//                      TEST_sysclk                        
//*********************************************************
                                                           
always  #20  clk <= !clk;//clk -> 40us/clk cycle          


Ham_Code_R 	hcr	(                                                                          
			 .clk		(clk	),            
			 .rst		(rst	),            
			 .req		(req	),            
			 .datain	(datain	),            
			 .cin		(cin	),            
			 .dataout	(dataout),            
			 .ack		(ack	)             
			);                                    
endmodule			 	                      

⌨️ 快捷键说明

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