在Verilog中LC-3 16位处理器错误模拟

时间:2013-12-27 18:48:34

标签: verilog modelsim lc3

我是Verilog的新手。我正在设计一个LC-3(小型计算机)CPU。我设计了PC单元,控制单元(作为有限状态机),指令存储器,ALU单元和模块中的数据存储器。还有一个作为Main的Register File单元,模块调用在本单元中完成。

我希望程序在PCread为1时工作,从out变量获取将分配给in的变量,当PCwrite为1时,只需递增{{1}变量。 out是发送到指令存储器的地址。

问题是当我模拟时,指令永远不会加载到指令存储器。因为PCwrite不适用于控制单元的第一个状态,因为我在第一个状态下重置了PCread和PCread变量。我这样做是因为我不想在一条指令完成它之前加载指令。我找不到办法解决这个问题。

我知道如果这个问题得到解决,处理器将会起作用,因为当我尝试使用带有初始化值的一条指令时,它会起作用。

任何帮助都会受到高度关注。

out

2 个答案:

答案 0 :(得分:1)

始终将@*用于组合逻辑的敏感度列表。变化:

  always @(MemRead) begin

为:

  always @* begin

您的always阻止对AddrReg中的更改不敏感。

答案 1 :(得分:0)

我发现解决此问题的一种方法是从PC单元向控制单元发送一个信号,指令地址通过输出reg变量发送到指令存储器,并检查控制单元中是否更改了该变量,如果是是,重置PCwrite变量。感谢所有人的帮助。