Forum Discussion

CLyna's avatar
CLyna
Icon for New Contributor rankNew Contributor
6 years ago

Issue with algorithm

I have been working on a version of the AES encryption algorithm, but the output waves are not matching up to what they should be i have included screenshot of the wave an the code, any help would be great as i have been stuck on this for a while the three modules byte substitution, row shifting and mixed columns are working correctly the issue seems to be lying with the state machine and key generator module. should i leave the load at one constantly? if i do it gives ten rounds out which is correct. But if i have it as a pulse it gives 40 outputs i am confused the code seems correct but it isn't functioning as so? Any help would be great. I have included a pdf with the code

4 Replies

  • CLyna's avatar
    CLyna
    Icon for New Contributor rankNew Contributor
    ControllingStateMachine: process(CLOCK)
    	begin
    		if rising_edge(CLOCK) then
    --sets the round value to 11 so it will reset the counter.
    			if RESET = '1' then
    				RoundNum <= x"a" & "01";
    			else
    --if it is round eleven then reset the round counter.
    				if RoundNum = (x"a" & "01") then
    					if LOAD = '1' then
    						RoundNum <= "000000";
    					end if;
    --if the round number is not equal 11 then increment the counter
    				elsif RoundNum /= (x"a" & "01") then
    					RoundNum <= RoundNum + '1';
    				end if;
    			end if;
    		end if;
    	end process;
    --Good shows when the 10th round has been iterated by the value 1 else it shows a 0.
    	GOOD <= '1' when RoundNum = x"a" & "00" else '0';
    --Complete shows the value 1 after the 10th round is complete
    	Complete <= '1' when RoundNum = x"a" & "01" else '0';  
  • sstrell's avatar
    sstrell
    Icon for Super Contributor rankSuper Contributor

    Just looking at your code, you have an if check on LOAD equal to 1 but you don't specify what to do if LOAD equals 0. That's going to create a latch and could be the cause of your issues.

    You always want to have a final "else" clause to cover all cases.

    #iwork4intel

    • CLyna's avatar
      CLyna
      Icon for New Contributor rankNew Contributor

      IF i leave load on one will it constantly stay on round one? I want it to stay on one but to then jump from that if statement and continue the round count? i have an endif straight after?