OC8051内部逻辑分析(1)

发布时间:2024-07-31  

采用数据流的方式进行OC8051内部的逻辑分析,需要首先理解其存储器架构,然后追踪程序到再到数据流。


前面有提到过,OC8051程序和数据存储器逻辑分离,在物理上,其可能有4种存储器,分别为内部程序存储器irom,内部数据存储器iram,外部程序存储器器xrom,外部数据程序存储器xram,其中访问xram和访问iram的指令不同(mov、movx,并要通过DPTR寄存器)。OC8051使用oc8051_defines.v控制所采用的存储结构,oc8051_defines.v部分代码如下:


 1 //

 2 // oc8051 ITERNAL ROM

 3 //

 4 `define OC8051_ROM

 5 

 6 

 7 //

 8 // oc8051 memory

 9 //

10 //`define OC8051_CACHE

11 //`define OC8051_WB

12 

13 //`define OC8051_RAM_XILINX

14 //`define OC8051_RAM_VIRTUALSILICON

15 `define OC8051_RAM_GENERIC

16 

17 

18 `define OC8051_XILINX_ROM


define OC8051_ROM:使用内部iROM,而外部xROM ,OC8051提供了3种可选的接口,1、CACHE;2、WISHBONE;3、内部信号线直通。


irom和iram是属于8051的部分,xrom,xram则可以没有,在实际的实现上,irom和xrom只要有一个就行。OC8051提供了irom的一个FPGA(XILINX)实现和一个行为仿真模型,均在文件oc8051_rom.v里,通过`define OC8051_XILINX_ROM,使用XILINX的实现,否则使用的是通用的仿真模型。另外OC8051工程提供了一个工具可以将HEX文件转换为.v,这种转换的实现和`define OC8051_XILINX_ROM所选用的实现是一样的,其更新ROM中代码非常不方便;这和其采用的ROM模型有关,通过如下代码可以看出其采用的存储器模型:


 1 reg [7:0] buff [0:65535]; //64kb

 2 

 3 assign ea = 1'b0;

 4 

 5 initial

 6 begin

 7   $readmemh("../../../bench/in/oc8051_rom.in", buff);

 8 end

 9 

10 always @(posedge clk or posedge rst)

11  if (rst)

12    ea_int <= #1 1'b1;

13   else ea_int <= #1 !ea;

14 

15 always @(posedge clk)

16 begin

17   data_o <= #1 {buff[addr+3], buff[addr+2], buff[addr+1], buff[addr]};

18 end


这样的存储模型很难直接使用通用的存储器进行实现。因为8051为8位微处理器,一般而言,程序存储器位宽为8即可,然而OC8051的实现使用了预取指令,需要一次发射3条指令(具体可通过其内部代码得到证实。);上述代码所示模型,需要存储器一个周期发射4Byte的程序,而由于8051送出来的地址是非字对齐的,因此这样的行为模型需要存储器支持非对其访问。如:addr=1;则data_o={buff[4],buff[3],buff[2],buff[1]},而如果采用32位宽的存储器,0~3个字节是一组,4~7为一组,一次只能出来一组的32位数据。


外部程序存储器接口可以选择CACHE方式和WB方式和直通方式,由于内部cpu实现方式,其行为模型依然需要和内部程序存储器一样。oc8051_xrom.v代码如下:


 1 module oc8051_xrom (rst, clk, addr, data, stb_i, cyc_i, ack_o);

 2 

 3 parameter DELAY=5;

 4 

 5 

 6 input rst, clk, stb_i, cyc_i;

 7 input [15:0] addr;

 8 output ack_o;

 9 output [31:0] data;

10 

11 

12 reg ack_o;

13 reg [31:0] data;

14 

15 reg [7:0] buff [0:65535];

16 //reg [7:0] buff [8388607:0];

17 reg [2:0] cnt;

18 integer i;

19 

20 

21 initial

22 begin

23 //  for (i=0; i<65536; i=i+1)

24 //    buff [i] = 8'h00;

25   $readmemh("../../../bench/in/oc8051_xrom.in", buff);

26 end

27 

28 always @(posedge clk or posedge rst)

29 begin

30   if (rst) begin

31     data <= #1 31'h0;

32     ack_o <= #1 1'b0;

33   end else if (stb_i && ((DELAY==3'b000) || (cnt==3'b000))) begin

34     data <= #1 {buff[addr+3], buff[addr+2], buff[addr+1], buff [addr]};

35     ack_o <= #1 1'b1;

36   end else

37     ack_o <= #1 1'b0;

38 end

39 

40 always @(posedge clk or posedge rst)

41 begin

42   if (rst)

43     cnt <= #1 DELAY;

44   else if (cnt == 3'b000)

45     cnt <= #1 DELAY;

46   else if (stb_i)

47     cnt <= #1 cnt - 3'b001;

48   else cnt <= #1 DELAY;

49 end

50 

51 endmodule


可以看出基本和irom行为模型一样,只不过支持参数定义其延迟周期(一般外部存储器访问速度会要慢些。)


ps:今天在仿真过程发现,使用外部xrom(tb中读入得ea=0:使用xrom,ea=1:使用irom),接口配置为WB接口(`define OC8051_WB),其延迟参数只有定义为DELAY=2时,程序才能正常运行,其他设置均会出错。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    时需要外部时钟。如下: 2、PLU配置 测试最简单的组合逻辑电路与时序逻辑电路,如下: 根据LPC55S69-EVK引出的引脚,如下: 配置引脚,如下: 配置时钟,PLU的CLKIN时钟设置为10K......
    实验报告中可以观察到所有的测试标准都通过了。 图4 标称分析波形图 2.2. 潜通路分析 在汽车中,通常由许多接地螺栓将负载连接到汽车/卡车的车身,从而为负载提供接地。当接......
    数字电路中组合逻辑的神奇效应; 在数字电路的世界里,组合逻辑电路就像是一位神奇的魔术师,它能根据输入信号的不同组合,瞬间变幻出各种输出结果。 这种电路的......
    ADALM2000实验:CMOS逻辑电路、D型锁存​器;目标 本实验活动的目标是进一步强化上一个实验活动“ADALM2000实验:使用CD4007阵列构建CMOS逻辑功能”中探讨的CMOS逻辑......
    器是一个具有特殊功能的二进制寄存器,可以存放计算产生的中间结果,省去了计算单元的读取操作,能加快计算单元的速度。串行累加器是由移位寄存器和全加器组成的一个求和电路。由题目给出的要求可以分析组合逻辑电路一是一个全加器电路......
    组合逻辑电路和时序逻辑电路数字电路可以分为组逻辑合电路和时序逻辑电路两种。 (1)组合逻辑电路组合逻辑电路是指输出值仅由输入信号的状态决定的电路......
    器的研发和技术积累。公司拥有掌握存储器和集成电路核心设计与测试技术的国际化团队,以及世界领先水平的存储器测试和模组应用实验中心。 其产品持续量产销售国内外,积累了良好的存储器/SoC的设计测试、规模......
    板(PCB)设计与校验,集成电路(IC)版图设计、验证和测试,数字逻辑电路设计,模拟电路设计,数模混合设计,嵌入式系统设计,软硬件协同设计,芯片上系统(SoC)设计,可编程逻辑器件(PLD)和可......
    可以看到,LUT具有和逻辑电路相同的功能。实际上,LUT具有更快的执行速度和更大的规模。由于基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以......
    上,LUT具有更快的执行速度和更大的规模。 由于基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>