38 lines
		
	
	
		
			966 B
		
	
	
	
		
			VHDL
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			966 B
		
	
	
	
		
			VHDL
		
	
	
	
	
	
| ARCHITECTURE studentVersion OF triangleToPolygon IS
 | |
| 
 | |
|   signal mySignal : unsigned(bitNb downto 0);
 | |
|   constant aFullTriangle : unsigned(bitNb downto 0) := (others => '1');
 | |
|   signal bigTriangle: unsigned(bitNb downto 0);
 | |
|   signal oneOfHeight: unsigned(bitNb downto 0);
 | |
|   signal fiveOfHeight: unsigned(bitNb downto 0);
 | |
| 
 | |
| BEGIN
 | |
| 
 | |
|   resizeTriangle: process(triangle)
 | |
|   begin
 | |
|     bigTriangle <= ('0' & triangle) + ('0' & shift_right(triangle, 1));
 | |
|     oneOfHeight <= shift_right(aFullTriangle, 3);
 | |
|     fiveOfHeight <= shift_right(aFullTriangle, 1) + shift_right(aFullTriangle, 3);
 | |
|   end process resizeTriangle;
 | |
| 
 | |
|   convert: process(bigTriangle)
 | |
|   begin
 | |
|     
 | |
|     if bigTriangle < oneOfHeight then
 | |
| 
 | |
|       mySignal <= oneOfHeight;
 | |
|       
 | |
|     elsif bigTriangle > fiveOfHeight then
 | |
| 
 | |
|       mySignal <= fiveOfHeight;
 | |
| 
 | |
|     else
 | |
|       mySignal <= bigTriangle;
 | |
| 
 | |
|     end if ;
 | |
| 
 | |
|   end process convert;
 | |
|   
 | |
|   polygon <= resize(mySignal-oneOfHeight, bitNb);
 | |
| END ARCHITECTURE studentVersion;
 |