开发成功已经有一周了,才腾出时间来写篇日志。 riple
上周五晚上的这个时间,还在为如何屏蔽无效位、如何自动生成屏蔽操作的掩码在伤脑筋;周六一大早起来,把梦中想好的两条组合命令实现了;接下来,又实现了代码段起始地址的自动获取和汇编语言文件的编译;最重要的是,实现了命令行脚本的离线运行功能,即使没有硬件开发板,也能编译汇编文件了。 riple
这一Tcl程序的操作界面如下,可以很容易地看出,是从vjtag_master的操作界面移植来的: riple
实现的功能如下: riple
1. 操作指令记录和汇编文件编译功能。通过init和done两条指令打开和关闭目标二进制文件,供记录操作指令对应的二进制指令;通过compile指令把一个用汇编指令编写的文件编译为目标二进制文件,编译功能支持Micro-Sequencer的全部9条基本指令。 riple
2. 原始指令执行功能。除了jmp和jmpd指令外,通过vjtag_master模拟执行了Micro-Sequencer的7条基本指令。 riple
3. 组合指令执行功能。为了方便汇编语言的编写,设计了等价于多条原始指令组合执行的组合指令。 riple
4. 总线状态调试功能。保留了vjtag_master的调试指令。 riple
汇编文件和编译生成的二进制文件在此。汇编文件可以采用各种文件类型(.txt、.tcl),编译生成的microsequencer_classic_0.mif文件是Quartus II专用的存储器初始化文件,用于初始化Avalon-microsequencer的指令ROM。 riple
比较这两个文件可以看出,汇编文件中的18条汇编指令编译后得到44条二进制指令。在汇编文件中通过set指令可以定义Avalon-MM总线上特定地址值对应的变量,在后续指令中可以通过引用该变量访问特定地址;通过get_addr指令可以获得下一条指令在指令存储器中对应的地址值,这一地址值可以通过set命令指定给一个变量,在跳转指令中引用该变量,可以访问特定代码段的起始地址。 riple
这一简单编译工具采用Tcl语言编写,是从avalon_vjtag_master.tcl改编来的,是原有工具的升级版,源代码在此。在windows命令行执行quartus_stp -t avalon_vjtag_master.tcl即可运行。 riple
相关链接:
Microsequencer - From Wikipedia, the free encyclopedia
A Wisdom Archive on microsequencer
The scc-32/scc-16 Microsequencers and AHBDBG System Debugger
Dynamically Reconfigurable N-Way Microsequencer
用户211934 2009-7-21 16:07
用户349880 2008-1-16 13:23
ash_riple_768180695 2007-12-17 10:04
实现FSM的三种方法。
ash_riple_768180695 2007-12-16 14:27
近期写作计划:
FSM类:输入逻辑时序优化,及注意事项。Moore、Mealy型的比较和lookahead型Mealy。Quartus对状态机编码的优化。
AMS类:数据宽度16位,代码深度可调。在初始化8842中的应用。用户自定义指令(函数)的添加。协处理器的添加。
statesequencer:分析和应用。
SOPC:多核。ST互联模式。ST互联的应用。
ATA:新旧协议支持的命令集变化。ATA协议的发展过程。
用户130678 2007-4-20 09:20