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

📄 ham_code_16rt.v

📁 HAMMING CODE在偵錯及更正的原理實現
💻 V
字号:
`timescale 1ns/1ns        
                          
module Ham_Code_16RT();
//input	signal                   
reg 		clk,rst;                              
reg		req;        
reg	[15:0]	datain;     
reg	[11:0]	cin;        
                            
//output signal             
wire	[15: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 	<= 16'heeee;//f 
		cin	<= 12'hfff;//7                    
#100		                       
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'hffff;//e
		cin     <= 12'h0;//0                     
#100		                          
		req  	<= 1'b0;        		
#200		req	<= 1'b1;                         
		datain 	<= 16'hcccc;//d
		cin	<= 12'h924;//4                      
#100		                         
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'hdddd;//c 
		cin     <= 12'h6db;//3                    
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'haaaa;//b
		cin	<= 12'h492;//2                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'hbbbb;//a
		cin	<= 12'hb6d;//5                     
#100		                           
		req  	<= 1'b0;        		
#200		req	<= 1'b1;                         
		datain 	<= 16'h8888;//9
		cin 	<= 12'h249;//1                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'h9999;//8
		cin	<= 12'hdb6;//6                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'h6666;//7
		cin	<= 12'h249;//1                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'h7777;//6
		cin	<= 12'hdb6;//6                     
#100		           		
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'h4444;//5
		cin	<= 12'h492;//2                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'h5555;//4
		cin	<= 12'hb6d;//5                     
#100		
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'h2222;//3
		cin	<= 12'h924;//4                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'h3333;//2
		cin	<= 12'h6db;//3                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'h0000;//1
		cin	<= 12'hfff;//7                     
#100		                           
		req  	<= 1'b0;                        
#200		req	<= 1'b1;                         
		datain 	<= 16'h1111;//0
		cin	<= 12'h0;//0   		        
#100		      		        
		req  	<= 1'b0;   		        
//***********************************correct datain************************
#200		req	<= 1'b1;        
		datain 	<= 16'hffff;//f     
		cin	<= 12'hfff;//7     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'heeee;//e     
		cin     <= 12'h0;//0     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'hdddd;//d     
		cin	<= 12'h924;//4     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'hcccc;//c     
		cin     <= 12'h6db;//3     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'hbbbb;//b     
		cin	<= 12'h492;//2     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'haaaa;//a     
		cin	<= 12'hb6d;//5     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'h9999;//9     
		cin 	<= 12'h249;//1     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'h8888;//8     
		cin	<= 12'hdb6;//6     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'h7777;//7     
		cin	<= 12'h249;//1     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'h6666;//6     
		cin	<= 12'hdb6;//6     
#100		           		
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 4'h5555;//5     
		cin	<= 3'h492;//2     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'h4444;//4     
		cin	<= 12'hb6d;//5     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'h3333;//3     
		cin	<= 12'h924;//4     
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'h2222;//2     
		cin	<= 12'h6db;//3     
#100		                        
		req  	<= 1'b0;        		                                        
#200		req	<= 1'b1;                          
		datain 	<= 16'h1111;//1                       
		cin	<= 12'hfff;//7                       
#100		                                          
		req  	<= 1'b0;                          
#200		req	<= 1'b1;                          
		datain 	<= 16'h0000;//0                       
		cin	<= 12'h0;//0   	                  
#100		      		                          
		req  	<= 1'b0;   
		
#100		                        
		req  	<= 1'b0;        
#200		req	<= 1'b1;        
		datain 	<= 16'h3333;//0     
		cin	<= 12'hfff;//0   			
#100		      		        		
		req  	<= 1'b0;   			
			
#500000 $stop;                        
end                                   
                                      
initial                               
begin                                 
     	$dumpfile("Ham_Code_16RT.vcd"); 
        $dumpvars(0,Ham_Code_16RT);     
#500000 $finish;	              
                                      
end //end initial                     
                                      
                                                           
//*********************************************************
//                      TEST_sysclk                        
//*********************************************************
                                                           
always  #20  clk <= !clk;//clk -> 40us/clk cycle          


Ham_Code_16R 	hcr16	(                                                                          
			 .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 + -