项目作者: hyukjuns

项目描述 :
HDL 기말 프로젝트
高级语言: VHDL
项目地址: git://github.com/hyukjuns/esc-simple-cpu.git
创建时间: 2020-03-31T13:58:02Z
项目社区:https://github.com/hyukjuns/esc-simple-cpu

开源协议:

下载


HDL 기말 프로젝트 Simple Cpu

개발 환경

  • modelsim (for simulation)
  • Fpga
    • Board: Spartan-3AN Starter Kit
    • Software: Xilinx_ISE_13.3

      Architecture

      images/arhi1.png
      images/arhi2.png
      images/arhi3.png
  • Component
    • CPU
    • Keyboard: ps2_rx module
    • VGA Controller

      Description

      각자 설계한 CPU + VGA controller + keyboard 를 이용하여 다음과 같이 실습 시험을 치룸

  • 실습 시험 당일 주어지는 2개의 8-bit unsigned number 를 임의 레지스터로 로딩하 고 모니터 화면에 하나씩 출력되도록 myrom 용 프로그램(기계어)를 수정해 .coe 파일로 저 장
  • ISE 합성 후 configuration
  • 키보드의 키(A: addition, X: xor, N: nand, R: shift right, L: shift left)를 랜덤하게 누를 때마다 그 number 들에 대해 연산을 수행해 그 결 과를 화면에 출력
    • addition 시 carry 는 무시할 것
    • shift 연산은 첫번째 숫자에만 적용

      myrom.coe 파일(기계어 프로그래밍)

      프로젝트 중 가장 어려웠더 부분이 myrom을 모듈(.v파일)로서 구현하는게 아닌 순수 기계어(coe파일)로 작성해야 하는것이 난이도가 있었습니다.
      각 모듈을 참고하며 프로그램의 흐름을 만든뒤 적절한 조건과 분기를 통해 기능을 구현하였습니다.


      myrom.coe
      1. MEMORY_INITIALIZATION_RADIX=2;
      2. MEMORY_INITIALIZATION_VECTOR=
      3. 1100010101010000
      4. 1100001110010001
      5. 1100000011110101
      6. 1100000111000010
      7. 1100001000100011
      8. 1100001100010100
      9. 1100001011011000
      10. 1100010010111001
      11. 1000000000000110
      12. 1000011000000110
      13. 1000011000000110
      14. 1000011000000110
      15. 0100011001010110
      16. 0100000001010111
      17. 1100000000001101
      18. 1100000000001110
      19. 1110001001100000
      20. 1100000000001101
      21. 1100000000011110
      22. 1110001001110000
      23. 1000000100000110
      24. 1000011000000110
      25. 1000011000000110
      26. 1000011000000110
      27. 0100011001010110
      28. 0100000101010111
      29. 1100000000011101
      30. 1100000000001110
      31. 1110001001100000
      32. 1100000000011101
      33. 1100000000011110
      34. 1110001001110000
      35. 1111000000000010
      36. 1100001000001111
      37. 1110100000000000
      38. 1111101100100001
      39. 1100001001101111
      40. 1100001100111111
      41. 1111101100110001
      42. 1100001010011111
      43. 1100010000101111
      44. 1111101101000001
      45. 1100001011001111
      46. 1100010100011111
      47. 1111101110000001
      48. 1100001011111111
      49. 1100011000001111
      50. 1111101110010001
      51. 1100001100101111
      52. 1100011011111111
      53. 1100001000001111
      54. 0001000000011100
      55. 1110100000000000
      56. 1000110000000110
      57. 1000011000000110
      58. 1000011000000110
      59. 1000011000000110
      60. 0100011001010110
      61. 0100110001010111
      62. 1100000000101101
      63. 1100000000001110
      64. 1110001001100000
      65. 1100000000101101
      66. 1100000000011110
      67. 1110001001110000
      68. 1100001000001111
      69. 0110000000011100
      70. 1110100000000000
      71. 1000110000000110
      72. 1000011000000110
      73. 1000011000000110
      74. 1000011000000110
      75. 0100011001010110
      76. 0100110001010111
      77. 1100000000101101
      78. 1100000000001110
      79. 1110001001100000
      80. 1100000000101101
      81. 1100000000011110
      82. 1110001001110000
      83. 1100001000001111
      84. 1011000000011100
      85. 1110100000000000
      86. 1000110000000110
      87. 1000011000000110
      88. 1000011000000110
      89. 1000011000000110
      90. 0100011001010110
      91. 0100110001010111
      92. 1100000000101101
      93. 1100000000001110
      94. 1110001001100000
      95. 1100000000101101
      96. 1100000000011110
      97. 1110001001110000
      98. 1100001000001111
      99. 1000000000001100
      100. 1110100000000000
      101. 1000110000000110
      102. 1000011000000110
      103. 1000011000000110
      104. 1000011000000110
      105. 0100011001010110
      106. 0100110001010111
      107. 1100000000101101
      108. 1100000000001110
      109. 1110001001100000
      110. 1100000000101101
      111. 1100000000011110
      112. 1110001001110000
      113. 1100001000001111
      114. 1001000000001100
      115. 1110100000000000
      116. 1000110000000110
      117. 1000011000000110
      118. 1000011000000110
      119. 1000011000000110
      120. 0100011001010110
      121. 0100110001010111
      122. 1100000000101101
      123. 1100000000001110
      124. 1110001001100000
      125. 1100000000101101
      126. 1100000000011110
      127. 1110001001110000
      128. 1100001000001111;
      char_rom.coe

      1. MEMORY_INITIALIZATION_RADIX=16;
      2. MEMORY_INITIALIZATION_VECTOR=
      3. 00, 3C, 62, 52, 4A, 46, 3C, 00,
      4. 00, 08, 38, 08, 08, 08, 3C, 00,
      5. 00, 18, 24, 04, 08, 10, 3C, 00,
      6. 00, 00, 3C, 42, 0C, 42, 3C, 00,
      7. 00, 0C, 14, 24, 7E, 04, 04, 00,
      8. 00, 7E, 40, 7C, 02, 42, 3C, 00,
      9. 00, 3C, 40, 7C, 42, 42, 3C, 00,
      10. 00, 3C, 24, 24, 04, 04, 04, 00,
      11. 00, 3C, 42, 3C, 42, 42, 3C, 00,
      12. 00, 3C, 42, 3E, 02, 42, 3C, 00,
      13. 00, 3C, 42, 7E, 42, 42, 42, 00,
      14. 00, 7C, 42, 7C, 42, 42, 7E, 00,
      15. 00, 7E, 40, 40, 40, 40, 7E, 00,
      16. 00, 7C, 46, 42, 42, 46, 7C, 00,
      17. 00, 7E, 40, 7E, 40, 40, 7E, 00,
      18. 00, 7E, 40, 7E, 40, 40, 40, 00;