图2 系统连线图
3 各功能部件的VHDL源程序
3.1 内存ROM功能模块的VHDL实现
对于图1中ispLSI 芯片功能图中内存ROM 16X8的功能采用VHDL实现代码如下。
rom16x8: process(ce)
begin
if ce='0' then --使能端ce 为逻辑“0”时,才能进行数据的读取命令。
case addrbus is
when “0000”=>
maindata<=“10100000”;
when others=>
maindata<=“00000000”;
end case;
end if; end process rom16x8;
3.2 CPU功能模块的VHDL实现
对于图1 中ispLSI 芯片功能图中内CPU 功能模块的VHDL 实现流程如图3 所示,它是整个模型机的核心。
图3 CPU 功能模块VHDL 实现流程
计算机硬件系统的仿真根据ROM的中存放的程序不同,这个模型机完成的操作也就不同,下面将通过建立编写仿真测试向量,来进行逻辑功能仿真,检验设计是否实现了需要完成的功能。 对实现20-6+2运算的工作程序及其在ROM内存映像(起始地址0H)如表3所示:
表3工作程序
进行功能仿真首先需要用ABEL-HDL语言编写独立的测试向量文件:
MODULE model
clk,reset,outport,led,wr pin;
Test_vectors ([clk,reset]->[outport,led,wr]) [.x.,1]->[.x.,.x.,.x.];
@REPEAT 100 {[.c.,0]->[.x.,.x.,.x.];} [.x.,1]->[.x.,.x.,.x.];
END
利用上面建立的测试向量文件,其仿真结果如图4所示。
由仿真波形可以看到在执行OUT 指令时送出20-6+2的运算结果为1C,同时使输出给OUTPUT DEVICE 的信号led='0',wr也由1->0.在执行HLT指令时run 由1->0,模型机停机。这与理论结果完全相符。