Verilog实现的8周期非流水CPU

Bloodmoon 发表于 2009-12-10 19:54:07

   这是一个用Verilog实现的CPU, 共14个verilog文件,每个文件中包含一个模块,分别为:
      (1)accum.v                              累加器
      (2)adr.v                                    地址多路器
      (3)alu.v                                    算术逻辑运算单元
      (4)clk_gen.v                            时钟发生器
      (5)counter.v                            程序计数器
      (6)datactl.v                              数据控制器
      (7)register.v                            指令寄存器
      (8)machine.v与(9)machinectl.v共同组成  状态控制器
    以上为cpu的8个组成部分。
     
      (10)cpu.v使用以上文件中的模块,构成cpu,以下文件是验证cpu的功能所必须的模块。

      (11)rom.v    ROM
      (12)ram.v    RAM
      (13)addr_decode.v   地址译码器
      (14)cputop.v文件使用了cpu.v, rom.v, ram.v, addr_decode.v文件中的模块来验证cpu的功能。
 

    整个工程能够在modelsim  SE PLUS 6.2b 中通过编译,并且能够仿真。 这个cpu参考了夏宇闻《Verilog数字系统教程》一书,是个非流水cpu。
 
    源代码下载地址:
    http://cid-590b880d9b5a76e5.skydrive.live.com/self.aspx/.Public/CPU.rar 
 
    复制以上链接到IE地址栏,敲击回车就能看到文件,(也可以右键点击上述链接,选择在新窗口中打开),推荐使用IE直接下载,用迅雷可能会损坏文件。(点击文件的时候迅雷可能会弹出,选择取消,再点击文件一次,迅雷弹还是出的话,还是选择取消,多试几次,直到IE下载框出现。)
   
    这是用Modelsim SE PLUS 6.2b 创建的工程,工程里除了源代码和工程文件以外,还有6个文件用于测试CPU是否正确实现,分别为:tes1.pro   test1.dat,   test2.pro   test2.dat,   test3.pro   test3.dat,.pro文件里存的是指令,.dat文件里存的是数据;.pro文件会被读入到ROM中,.dat文件会被读入到RAM中。test1.pro使用test1.dat中的数据,test2.pro使用test2.dat中的数据,test3.pro使用test3.dat中的数据。
    
     test1和test2用于测试CPU的指令,test3使用该CPU实现斐波那契数的计算。

下列为仿真结果。


图1. tes1.pro的结果


图2. tes2.pro的结果


图3. tes3.pro的结果

关键词(Tag): cpu verilog

最新评论

发表评论

*昵称

已经注册过? 请登录

Email
网址
*评论