element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Personal Blogs
  • Community Hub
  • More
Personal Blogs
Legacy Personal Blogs Architecture of the CPU
  • Blog
  • Documents
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: timswift
  • Date Created: 16 Nov 2016 9:56 PM Date Created
  • Views 881 views
  • Likes 1 like
  • Comments 3 comments
  • transistor
  • alu
  • computer
  • diy
  • cpu
  • Architecture
  • computer architecture
Related
Recommended

Architecture of the CPU

timswift
timswift
16 Nov 2016

Now that I have completed the ALU I can move onto the data path and registers.

Here are some of my constraints;

 

  • no tri-state buffers
  • keep the number of registers to a minimum (less then five, an 8 bit register uses 64 transistors)
  • use the ALU to increment the program-counter (PC)
  • 8 bit address and data bus's
  • accumulator-memory instruction set

 

 

The first thing to do is to identify the registers (reg). I will need a PC, accumulator (ACC), address reg (AR), instruction reg (IR), and a B reg to act as the second input of the ALU.

either the PC or the AR will feed the address bus. If you OR with zero you get whatever you OR'd with so the PC,AR, and ACC can feed into the top of the ALU and the B reg, zero, and one feed into the bottom (the one is for increments).

 

 

Convert this to a block diagram and you get this;

image

 

the problems start when you try to increment the PC (or any other reg). To do this you select the 1 on the bottom bus and the PC on the top  bus then the ALU wrights to the bus and the PC reads but then...  It oscillates! The solution is to make the PC and ACC edge-triggered but that doubles the size of these reg! so the other choice is to add a temporary reg on to the output of the ALU

like this;

image

That is 384 transistors in registers alone! But maybe I can use the B reg as the address reg and the second operand; saving on one register. But to do this I need to be able to wright a zero to the top bus also

which results in this;

image

Of course I can't use tri-state buffers so it must be converted to multiplexers (and add the carry reg and flags zero, and neg);

image

 

The bottom and top MUX's can be simplified for a example to select zero you can use eight transistors to pull the output low.

 

I am just waiting on more solder to arrive then I will begin construction.  I am quit new to this so all comments and suggestions are very welcome.

 

Tim

  • Sign in to reply

Top Comments

  • clem57
    clem57 over 8 years ago +1
    You are doing well. Take a look at https://www.pctechguide.com/cpu-architecture/principles-of-cpu-architecture-logic-gates-mosfets-and-voltage which says a 4 bit 40004 from Intel had 2,300 transistors…
  • DAB
    DAB over 8 years ago

    Nice update Tim.

     

    I am not surprised at the oscillations.

    Each wire has inductance and capacitance, so you can get self oscillations easily, so you might need to do some filtering along some of your traces.

     

    DAB

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • timswift
    timswift over 8 years ago in reply to clem57

    And the MOS 6502 only used 3500 transistors (and a good amount of these act as pull-up resistors).

    It uses 40 transistors per 8 bit register compared with my 64 transistors and 96 resistors. If you used resistors as the pull-up's it would only take 24 transistors (of course it uses pass-mosfet's which do help).

     

    Tim

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • clem57
    clem57 over 8 years ago

    You are doing well. Take a look at https://www.pctechguide.com/cpu-architecture/principles-of-cpu-architecture-logic-gates-mosfets-and-voltage which says a 4 bit 40004 from Intel had 2,300 transistors of Mosfet type. As to register they had 16 4 bit or 8 8 bit.

    Clem

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube