集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 4984|回复: 9

ModelSim SE操作指南

[复制链接]
IPO 发表于 2010-8-1 09:08:04 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-8-3 09:00 编辑

第一章 ModelSim介 绍

本指南是为 ModelSim5.5f版本编写的,该版本运行于UNIX和Microsoft Windows 95/98/Me/NT/2000的操作系统环境中。本指南覆盖了VHDL和Verilog模拟仿真,但是你在学习过程中会发现对于单纯的HDL设计工作而言,它是一个很有用的参考。ModelSim具备强大的模拟仿真功能,在设计、编译、仿真、测试、调试开发过程中,有一整套工具供你使用,而且操作起来极其灵活,可以通过菜单、快捷键和命令行的方式进行工作。ModelSim的窗口管理界面让用户使用起来很方面,它能很好的与操作系统环境协调工作。ModelSim的一个很显著的特点就是它具备命令行的操作方式,类似于一个shell有很多操作指令供你使用,给人的感觉就像是工作在Unix环境下,这种命令行操作方式是基于Tcl/Tk的,其功能相当强大,这需要在以后的实际应用中慢慢体会。
ModelSim的功能侧重于编译、仿真,不能指定编译的器件,不具有编程下载能力。不象 Synplify和MAX+PLUS II可以在编译前选择器件。而且ModelSim在时序仿真时无法编辑输入波形,不象MAX+PLUS II可以自行设置输入波形,仿真后自动产生输出波形,而是需要在源文件中就确定输入,如编写测试台程序来完成初始化、模块输入的工作,或者通过外部宏文件提供激励。这样才可以看到仿真模块的时序波形图。另外对于Synplify来说,也只具有编译能力,但是比MAX+PLUS II可编译的verilog的内容要多,所以常常可以现在Synplify下编译,生成编译文件再送到MAX+PLUS II中使用。
ModelSim还具有分析代码的能力,可以看出不同的代码段消耗资源的情况,从而可以对代码进行改善,以提高其效率。

第二章    ModelSim的主要结构

ModelSim的主窗口(Main window)包括菜单栏、工具栏、工作区和命令行操作区。
在工作区可以显示Project Tab、Library Tab、Sim Tab(显示Load Design、Hierarchical Structure);在命令行操作区,可以用命令提示符的方式进行编译、仿真设计,同时打开其他窗口。
在菜单栏View下可以打开,source window、list window、wave window、structure window、 signal window、dataflow window、process window、viarables window等窗口,用来测试仿真、调试仿真。由此也可以看出该软件具有强大的仿真设计能力,它提供的工具很多。
在帮助菜单里有SE的帮助文件和Tcl的帮助文件,是学用ModelSim很好的帮手。

第三章    ModelSim的简要使用方法

ModelSim的简要使用方法这一章里通过一些课程来简单介绍ModelSim的使用方法,更多的需要在实际应用中熟练和掌握。

第一课   Create a Project
1.    第一次打开ModelSim会出现Welcome to ModelSim对话框,选取Create a Project,或者选取File\New\Project,然后会打开Create Project对话框。
2.    在Create Project对话框中,填写test作为Project Name;选取路径Project Location作为Project文件的存储目录;保留Default Library Name设置为work。
3.    选取OK,会看到工作区出现Project and Library Tab。
4.    下一步是添加包含设计单元的文件,在工作区的Project page中,点击鼠标右键,选取Add File to Project。
5.     在这次练习中我们加两个文件,点击Add File to Project对话框中的Browse按钮,打开ModelSim安装路径中的 example目录,选取counter.v和tcounter.v,再选取Reference from current location,然后点击 OK。
6.    在工作区的Project page中,单击右键,选取Compile All。
7.    两个文件编译了,鼠标点击Library Tab栏,将会看到两个编译了的设计单元列了出来。看不到就要把Library的工作域设为work。
8.    最后一不是导入一个设计单元,双击Library Tab中的counter,将会出现Sim Tab,其中显示了counter设计单元的结构。也可以Design\Load design来导入设计。
到这一步通常就开始运行仿真和分析,以及调试设计,不过这些工作在以后的课程中来完成。结束仿真选取Design \ End Simulation,结束Project选取File \ Close \ Project。

第二课   Basic VHDL Simulation
准备仿真
1.    为这次练习新建一个目录,然后拷贝example目录中所有的vhd文件到该目录下。设置该目录为当前工作目录,这一步通过从该目录调用ModelSim或是选取File\Change Directory命令来完成。
2.     在编译任何HDL代码前,要建立一个设计库来存放编译结果。选取Design \ Create a New Library生成一个新的设计库。确定选取Create: a new library and a logical mapping to it,在Library Name域中键入work,然后选取OK。这就在当前目录中建立了一个子目录,即你的设计库。ModelSim在这个目录中保存了名为_info的特殊文件。
( Prompt : vlib work
vmap work work )
3.     选取工具栏里的Compile命令来编译counter.vhd文件到新库中。这将打开Compile HDL Source Files对话框。使用vcom命令是看不到的。从列表中选取counter.vhd再点击Compile,完成后选取Done。可以编译多个文件,按照设计的需要依次选取进行编译。
( Prompt : vcom counter.vhd )
4.    选取工具栏里的Load design按钮,导入设计单元。Load design对话框可以让你选择库和顶级( top-level )设计单元来仿真,你也可以为仿真选取Simulation Resolution限制。这次仿真运行,下述是缺省的显示:
• Simulator Resolution: default (the default is 1 ns)
• Library: work
• Design Unit: counter
   如果设计单元是一个实体,你可以点击前面的加号,来浏览其关联的结构。
   ( Prompt : vsim counter )
5.    选取counter,然后选择Load接受设置。
6.    下面,选取View \ All打开所有的窗口,关于窗口的描述,参阅ModelSim User’s Manual。
( Prompt : view * )
7.    在Signals window选取View\List\Signals in Region,这个命令显示List window中的顶级( top-level )信号。
   ( Prompt : add list /counter/* )
8.    下步,通过从Signals window选取View\Wave\Signals in Region添加顶级( top-level )信号到Wave window。
   ( Prompt : add wave /counter/* )
运行仿真
通过应用始终输入激励来开始仿真。
1.    点击主窗口,在vsim提示符下敲如下面的命令:
   ( force clk 1 50 , 0 100 –repeat 100 )
   ( MENU : Signals\Edit\Clock )
   ModelSim解释force命令如下:
    force clk to the value 1 at 50 ns after the current time
    then to 0 at 100 ns after the current time
    repeat this cycle every 100 ns
2.    现在你可以练习来自于主窗口或波形窗口工具条按钮的两个不同的Run功能。(Run功能在主窗口和波形窗口中定义,即这两个窗口中有Run功能)。首先选取Run按钮,运行完成之后选取Run All。
Run. 运行仿真,在100ns后停止。
(PROMPT: run 100) (MENU: Run \ Run 100ns)
Run-All. 一直运行仿真,直到选取Break。
(PROMPT: run -all) (MENU: Run \ Run -All)
3.    选取主窗口或波形窗口的Break按钮来中断仿真,一旦仿真到达一个可接受的停止点,它就停止运行。
在源文件窗口中的箭头指向下一条将被执行的语句。(如果暂停发生时,仿真没在评测一个过程,则没有箭头显示在源文件窗口上)。
下面,你将在18行的函数内部设置一个断点。
4.    移动鼠标到源文件窗口,在18行上点击设置断点,可以看到紧挨着行号有一个红点,可以用鼠标点击切换断点的使能与否,断点禁止后看到是一个小的红色的园环。可以在断点上点击鼠标右键,选取Remove BreakPoint 18来取消断点。
( PROMPT : bp counter.vhd 18 )
5.    选取Continue Run按钮恢复中断了的运行,ModelSim会碰上断点,通过源文件中的一个箭头或是在主窗口中的一条中断信息来显示出来。
   (PROMPT: run -continue) (MENU: Run \ Continue)
6.    点击Step按钮可以单步执行仿真,注意Variables window中值的变化。如果你愿意可以持续点击Step。
   (PROMPT: run -step) (MENU: Step)
7.    当你完成了,敲入以下命令结束仿真。
quit -force
8.    命令没有寻求确认就结束了ModelSim。

第三课   Basic verilog Simulation
1.    新建一个目录,并设置该目录为当前工作目录,通过从该目录调用ModelSim或是选取File\Change Directory命令来完成。
2.     拷贝example目录中verilog文件到当前目录下。在你编译verilog文件前,你需要在新目录下生成一个设计库。如果你仅仅熟悉解释性verilog仿真器,诸如Cadence Verilog-XL,那么对于你来说这是一个新的方法。因为ModelSim是一个编译性Verilog 仿真器,对于编译它需要一个目标设计库。如果需要的话,ModelSim能够编译VHDL和Verilog代码到同一个库中。
3.    在编译任何HDL代码前,要建立一个设计库来存放编译结果。选取Design \ Create a New Library生成一个新的设计库。确定选取 Create: a new library and a logical mapping to it,在Library Name域中键入work,然后选取OK。这就在当前目录中建立了一个子目录,即你的设计库。ModelSim在这个目录中保存了名为_info的特殊文件。
( Prompt : vlib work
vmap work work )
4.    下面你将编译Verilog设计。
这个设计例子由两个Verilog源文件组成,每一个都包含一个唯一的模块。文件counter.v包含一个名为counter的模块,它执行一个简单的八位加法计数器。另一个文件tcounter.v是一个测试台模块(test_counter),通常用来校验counter。在仿真下,你可以看到这两个文件,通过一个被测试台例示了的模块counter的一个简单的实例(名为dut的实例),来层次化的设置了。稍候你将有机会看一下这个代码的结构,现在,你需要编译两个文件到work设计库。
5.    通过选取工具条中的Compile按钮来编译两个文件。
   ( PROMPT : vlog counter.v tcounter.v )
   这就打开了Compile HDL Source Files对话框。
   选取两个文件后,选择Compile,编译完成后选取Done。
6.    选取工具条中的Load Design按钮开始仿真。
   ( PROMPT : vsim test_counter )
   Load Design对话框允许你从指定的库中选取一个设计单元仿真。你也可以
   为仿真选取Simulation Resolution限制,缺省的库是work,缺省的Simulation Resolution是1ns。
7.    选取test_counter,点击Load接受这些设置。
8.    通过在主窗口下的vsim提示符下敲入下述命令来调出Signals、List and Wave window:
   view signals list wave
   (MENU: View\<window name\)
9.    为了列示顶级( top-level )信号,移动鼠标到Signals window,选取View\List\Signals in Region。
   ( Prompt : add list /test_counter/* )
10.    现在向Wave window添加信号。在Signals window选取Edit\Select All选择三个信号,拖动三个信号到Wave window的路径名或是数值窗格的任一个中。
HDL条目也能够从一个窗口拷贝到另一个窗口(或者是在Wave and List window内部),通过Edit \ Copy和Edit \ Paste菜单命令。也能删除选取的条目Edit \ Delete。
11.    下面打开Source window,选取View \ Source
   ( Prompt : view source )
12.    导入设计的时候会在工作去开出一个新的Sim Tab栏。这个Structure Pane展示了设计的层次结构。你可以点即“+”(expand)或“-”(contract)来观察。
13.     点击其中的Function increment可以注意到其他窗口是怎么适当的自动更新的。明确地说,Source window显示了你在 Structure window所选的层次水平的Verilog代码.在这种方式下使用Structure Pane类似于解释性Verilog的范围命令。现在,点击Structure Pane的顶层线,确定test_counter模块显示在Source window。
运行仿真
1.    Run运行100ns,缺省设置。
   (PROMPT: run ) (MENU: Run\Run 100ns)
2.    设置Run Length为500ns,然后Run。
现在仿真运行了600ns,在工作取底部状态栏可以看到这些信息。
3.    上个命令使仿真器前进了500ns,也可以设置仿真器推进的时间
run @ 3000
实际仿真器向前推进了2400ns(3000-600)
4.    选取主窗口Run All。
   (PROMPT: run -all ) (MENU: Run\Run -All)
5.    选取Break中断运行。
看Source window,察看中断执行的语句。
调试仿真
1.    在List window选取/test_counter/count。从List window菜单条中选取 Prop \ Signal Props。Modify Signal Properties (list) 对话框打开了。
为信号counter选取十进制(在Radix),相应的List window的输出也发生改变,成为十进制数,而不是缺省的二进制了。
2.    我们选取工作区Structure Pane中的dut:counter,然后在counter.v中的30行(这里包含一个到Verilog功能增量的调用)设置断点。
3.    选取Restart按钮,重载设计组件和重置仿真时间为零。
   (PROMPT: restart ) (MENU: File\Restart)
   确认Restart对话框中所有条目被选中,然后点击Restart。
   例子中的Verilog代码中19行有一个stop语句,如果不Restart的话,将会停
   在这一句上。
4.    选取Run –All(主窗口),恢复执行仿真。中断后看Source window。
   (PROMPT: run -all ) (MENU: Run\Run -All)
5.    正常的,当中断到达后你对一个或多个信号的值感兴趣,你有几个选项可以检测这些值。你能看显示在Signals window中的值;可以在Source window中,在变量上点右键;或者使用examine命令。
examine count
命令的结果是,值会输出在主窗口。
6.    执行单步跳使命令Step,遍历Verilog源函数。
7.    结束仿真的命令为:quit –force。

第四课   Mixed VHDL/verilog simulation
准备仿真
1.    生成一个新的工作目录,拷贝..\examples\mixedhdl\下的*.vhd和*.v文件到新目录中。设置为为当前工作目录。运行软件,如果Welcome对话框出现,选取Proceed to ModelSim。
2.    Select Design\Create a New Library
(PROMPT:vlib work)
Type Library Name:work
Select OK!
3.    编译文件
(PROMPT : vlog cache.v memory.v proc.v)
(PROMPT : vcom util.vhd set.vhd top.vhd)
打开Compile HDL Source Files对话框。 逐个编译Verilog文件。
cache.v memeory.v proc.v
4.    依赖设计,VHDL的编译次序是特定的。在这个例子中,top.vhd文件必须最后编译。按照下面的顺序编译文件:
util.vhd set.vhd top.vhd
5.    编译完成,点Done。
运行仿真
1.    选取Load Design开始仿真。Load Design对话框打开,选取top实体点击Load。
(PROMPT : vsim top)
2.    View\All,(PROMPT : view *)
3.    add list *
add wave *
(Signals MENU: View\List\Signals in Region)
(Signals MENU: View\Wave\Signals in Region)
4.    观察一下工作区的Structure pane。注意设计中两者的层次混合,VHDL级的用一个方框前缀指示,Verilog级的用一个圆形前缀指示。
5.    在Structure pane中点击模块c:cache,它的源代码出现在源文件窗口。
6.    用查找功能定位cache.v文件中cache_set的声明。
Edit\Find。
找到了可以发现,cache_set是cache.v文件内例示了的VHDL实体。
7.    在Structure window,点击行“s0:cache_set(only)”。则Source window显示了cache_set实体的VHDL代码。
8.    Quit -force

第五课   Debugging a VHDL simulation
准备仿真
1.    拷贝..\example\下的gates.vhd,adder.vhd,testadder.vhd文件到新建的工作目录,并定位为当前工作目录。
2.    生成一个新库:vlib library_2。
3.    在命令行的方式下敲入以下命令将源文件编译到新库中
vcom –work library_2 gates.vhd adder.vhd testadder.vhd
4.    下一步是映射新库到工作库,可以编辑modelsim.ini文件来生成映射,或者用vmap命令生成一个逻辑库名字来完成。
vmap work library_2
ModelSim为你修改modelsim.ini文件。
5.    选取Design\Load Design,打开Load Design对话框。
6.    确认simulation resolution为缺省;在设计单元中选取名为test_adder_structural的配置;单击Load接受设置。
   (PROMPT : vsim –t ns work.test_adder_structural)
7.    打开所有的窗口。(PROMPT:View *)(MENU:View\All)
8.    在Signals window中选区所有信号Edit\Select All然后拖到List window中。
   (MENU:View\List\Signals in Region) (PROMPT:add list *)
9.    同样地,把信号加到Wave window中。键入命令:add wave *
   (MENU:View\Wave\Signals in Region)(DRAG&Drop)
10.    在主工具条上的运行时间选择器中,改变运行时间设置为1000ns。
   (MENU:Option\Simulation\Defaults)
运行调试仿真
1.    选取Run,运行仿真。(PROMPT:run)
主窗口中的一条消息将通报你有一个判断错误。执行下面步骤查找错误。
2.    首先,改变仿真判断选项。选取Option\Simulation。
3.    选取Assertions页面。改变选择为Break on Assertion to Error并点击OK。这将使仿真停在HDL判断语句上。
4.    选取Restart。(MENU:File\Restart) (PROMPT:restart)
确定Restart对话框中所有条目被选,然后点击Restart。
5.    选取Run。可以看到Source window中的箭头指向判断语句。
   (MENU:Run\Run 1000 ns) (PROMPT:run)
6.    在Variables window中,你可以看到i=6。这表示仿真停留在测试模式环路的第六次重复中。
7.    点击加号“+”展开名为test_patterns的变量。
8.    也要展开排列test_patterns(6)的第六次纪录。
判断表明了Signal window中的 sum不等于Variables window中的sum字段。输入a,b和cin的和应该等于输出sum。但是在测试向量内有一个错误。为了改正这个错误,你需要重仿真且修改测试向量的初始值。
9.    执行restart –f命令
参数-f使ModelSim不出现确认对话框就重新仿真。
10.    在test Process window中选取 testbench process更新 Variables window。
11.    再次展开Variables window中的test_patterns和test_patterns(6)。点击变量名字,高亮显示.sum纪录,然后选取Edit\Change。
12.    把value中数值的最后四位(1000),替换为0111,并点击Change。(这只是暂时编辑,你必须用文本编辑器永久地改变源代码。)
13.    选取Run。
   (MENU:Run\Run 1 us) (PROMPT:run)
   这样,仿真运行时就不会报错了。
改变new-line触发
缺省的,对于列出信号的每一次变化一条新线显示在List window中。下面的步骤将改变触发因而每100ns就列出这些值。
1.    在List window中,选取Prop\Display Props。
2.    在Triggers页面完成这些步骤。
   &#8226;取消选取Trigger On:Signals以禁止在信号上触发
   &#8226;选取Trigger On:Strobe以开启strobe
   &#8226;在Strobe Period域键入100
   &#8226;在First Strobe at域键入70
   &#8226;单击OK接受设置
3.    最后一步将把信号a,b和sum改为十进制。选取Prop\Signal Props,打开Modify Signal Properties(list)对话框。
4.    选取信号,改变其属性。然后结束ModelSim,quit –force。

第六课   Running a batch-mode simulation
批处理模式仿真必须运行在DOS或UNIX提示符下。
1.    生成一个新目录,设置成当前工作目录。拷贝..\examples\counter.vhd到该目录下。
2.    生成一个新的设计库:vlib work
3.    映射库:vmap work work
4.    编译源文件:vcom counter.vhd
5.    使用宏文件为计数器提供激励。拷贝..\example\stim.do文件到当前工作目录中。
6.    生成批处理文件,内容为:
add list –decimal *
do stim.do
write list counter.lst
7.    执行下面的命令,运行批处理模式仿真:
vsim –do yourfile –wlf saved.wlf counter
&#8226;在名为“counter”的设计单元调用vsim仿真器
&#8226;通过-wlf这个可选项通知仿真器在名为saved.wlf的日志文件中保存仿真结果
&#8226;运行yourfile指定:值以十进制的方式列示出来;执行名为stim.do的激励;并将结果写到名为counter.lst的文件中。缺省的设计名为counter。
8.    浏览仿真结果 vsim –view saved.wlf
9.    打开一些窗口 view signals list wave
10.    在窗口中放置信号 add wave *
                        add list *
11.    运用Variables windows实验保存的仿真结果。完成了结束仿真:
quit –f
有关批处理和命令行模式更多的信息,请参阅ModelSim User’s Manual。

第七课   Executing Commands at startup
本课与第六课所介绍的工作于相同的目录,也是以命令行方式操作。
1.    这里将用到宏文件(DO)提供启动信息。拷贝..\examples\startup.do到当前工作目录。
2.    拷贝modeltech目录下的modelsim.ini文件到当前工作目录。然后编辑该文件,指定一个在设计导入之后被执行的命令。用notepad打开ini文件,取消下属语句的注释,它位于文件的[vsim]部分:(修改后保存)
Startup=do startup.do
3.    浏览这个DO文件,可以发现它用了一个预定义变量$entity来为不同的设计在启动时作不同的事情。
4.    键入以下指令指定将被仿真的顶级设计单元,开始仿真:vsim counter
注意到没有显示对话框仿真器就导入了设计单元。对于一再地仿真同一个设计单元,这样做是很便捷的。还可以注意到所有的窗口都打开了,这是因为命令view *包括在启动宏里面。
5.    结束ModelSim,执行quit –f命令。
6.    在其他例子中是不需要startup.do文件的,所以用文本编辑器注释掉modelsim.ini文件中的Startup这一行。

第八课   Finding names and values
Finding items by name in tree windows
你可以使用各个窗口(List,Process,Signal,Source,Structure,Variables,and Wave window)中的查找对话框找寻你需要的HDL条目。Edit\Find
Searching for item values in the List and Wave windows
你可以在List and Wave windows中搜寻HDL条目的值。Edit\Search
你能够为Signal Name(s)定位值,搜寻基于以下的选项:
Search Type:Any Transition搜寻选取信号的任何变化
Search Type:Rising Edge搜寻选取信号的上升沿
Search Type:Falling Edge搜寻选取信号的下降沿
Search Type:Search for Signal Value
搜寻Value域中指定的值(符合VHDL or Verilog的数值格式)
Search Type:Search for Expression
搜寻评测一个布尔真值的Expression域中的表达式
表达式可以调用一个以上的信号,但是限制在纪录于List windows上的信号。表达式可以包括常量、变量和Tcl宏。如果没有指定表达式,搜寻将返回一个错误。参阅ModelSim Command Reference以获取更多关于表达式语法的信息。
Search Options:Match Count
你能够搜寻关于值的第n个变化或者是第n个匹配。Match Count指示了搜寻到的变化或匹配的数量。
Search Options:Ignore Glitches
忽略VHDL信号和Verilog网表中的零宽度的脉冲干扰。
搜寻的结果显示在对话框的底部。

第四章    ModelSim使用中的注意事项

1.    如果打开ModelSim,没有出现Welcom to ModelSim对话框,可以在主窗口点击Help \ Enable Welcome,则以后打开ModelSim就会出现该对话框。
2.    在工作区底部的状态栏里会显示一些有用的信息。
3.    操作哪个目录中的文件一定要定位到该目录,或者是设置为当前工作目录。
4.    不能用UNIX或window命令来生成work子目录,因为里面没有_info文件,只能用菜单或vlib命令。
5.    断点只能设置在可执行的行上,这些行以绿色行号指示
6.     在Basic Verilog Simulation一课里面,编译两个文件的次序是不重要的(不同于被编译器指示生成的源码的从属性)。Verilog -Xl的用户可能再次感到奇怪,他们了解设计单元之间的接口检测或是编译器指示的继承关系上可能存在的问题。ModelSim推迟了这样的检测,直到设计被导入。所以在这里,如果你选择在tcounter.v之前或之后编译counter.v不存在任何问题。
7.    一组Verilog文件可以以任意次序编译,但是在一个混合VHDL/Verilog设计中,Verilog文件必须在VHDL文件值前编译。
8.    force命令可以驱动clk,相当于给仿真初始化。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
ktboy0502 发表于 2010-8-2 20:15:55 | 显示全部楼层
下来看看,多谢楼主
mozone 发表于 2011-4-10 16:22:59 | 显示全部楼层
多谢楼主分享
hng1123 发表于 2011-4-10 16:35:31 | 显示全部楼层
多谢了啊  !!!!!!!!!!
yaner 发表于 2011-6-8 09:08:58 | 显示全部楼层
谢谢哦 收下收下
zhixin888 发表于 2011-6-18 14:51:25 | 显示全部楼层
`◆◆◆单片机培训视.频教程-ARM 2440-stm32视.频-dsp-CPLD-FPGA-PADS开发视.频-嵌入式系统开发◆◆

单片机视.频教程介绍
  这是一部学单片机革命性的视.频教程,每讲3小时左右,讲座从最基本的预备知识开始讲起,非
常详细的讲解KEIL编译器的使用,包括软件仿真,测定时间,单步
运行,全速运行,设置断点,调试,硬件仿真调试,变量观察等,
整个过程全部用单片机的C语言讲解,从C语言的第一个主函数
MAIN讲起,一步步一条条讲解每一个语法,每条指令的意思,即
使对单片机一巧不能,对C语言一无所知,通过本课程的内
容也可以让你轻松掌握51单片机的C语言编程设计,全新的讲课风
格跳过复杂的单片机内部结构知识,首先从单片机的应用讲起一步
步深入到内部结构,让学生彻底掌握其实际应用方法,把51单片机
的所有应用每个部分都讲解的非常仔细,教师在教室前面用电脑一
条一条写程序,旁边单片机实验板一个实验一个的演示,
给学员解释每条指令的意思及原理,通过十天的时间让学生完全掌
握单片机的C语言编程。全程的屏幕,声音,用屏幕录像,实验板
现象用摄像头拍摄,这部教程算是国内首个如此创新的以教师亲自
实践为主,学员现场写程序,直接下载到实验板看现象,讲单片机
的视.频教程,只要你认真看,认真听,保证很快让你学会单片机
------------------------------------------------------
目录如下:
一 ,预备知识
点亮一个发光管         单片机能做什么,基本电子知识,C51知识简介,点亮
一个发光管,如何申请免费芯片样品。
二,流水灯设计蜂鸣器发声         
简单延时程序、子程序调用、带参数子程序设计、流
水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继
电器,集电极开路的概念及应用
三,数码管显示的原理、
数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、
重点讲述工作方式2、中断概念及中断函数写法、定
时器中断应用
四,数码管的动态显示原理及应用实现          
动态扫描概念、定时器、中断加深
五,独立键盘、矩阵键盘的检测原理及实现       
键盘检测、消抖、键盘编码、
带返回值函数写法及应用
六,AD、DA的工作原理及实现       
模拟电压与数字电压的关系、
为什么要使用AD及DA、ADC0804的操作方法、DAC0832的操作方法
七,串口通讯原理及操作流程       
串口通讯工作方式、重点讲述最常用的10位数据通讯、
波特率概念及如何根据波特率计算定时器初值
八,IIC总线AT24C02芯片工作原理,IIC总线工作原理、
目前非常通用的一种通信机制
九,1602液晶显示原理及实现       
最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作
十,电路图绘制全过程       
最顶级电路板设计软件Altium Designer使用、
元件库、封装库设计、绘制原理图、错误检查、
生成PCB、手动、自动布线、送去加工
----------------------------------------------
◆◆AVR单片机视.频内容◆◆:

第一讲:开发板和软件的操作使用
1、介绍配件。
2、安装软件(ICC AVR 和AVR STUDIO)及其使用,括新建工程、程序下载,仿真调试;整板测试;板上资源。
3、着重介绍一下USB接口的仿真器。
第二讲:AVR单片机的概述和C语言的基础知识
1、AVR单片机的概述包括它的优点、片上资源。
2、C语言的基础包括电平特性、2进制与16进制的表示及转换、二进制数的逻辑运算,数据类型,运算符。
3、着重讲一下特有的BIT()操作,C中的各种语句。
4、介绍一下AVR单片机IO口的配置。
第三讲:点亮发光二极管、驱动蜂鸣器、继电器
1、首先讲解一下原理图上开关电路、复位电路、时钟电路;
2、讲解573工作原理,
3、首先点亮一个发光二极管,然后让一个二极管亮灭变化。
4、编写函数证明573的工作原理:锁住后不导通就不能再更新数据。
5、编写延时函数,软件仿真查看延时的精确时间
6  子函数的编写(分带形参和不带形参)。
7、编写流水灯函数。
8、蜂鸣器,继电器的工作原理并编写程序。
第四讲:数码管工作原理
1、共阴共阳数码管内部结构,显示原理。
2、用数字万用表标定数码管的段选和位选
3、编写程序使1个数码管上显示数字
4、编写程序在6个数码管上滚动显示数字
5、重点讲解动态显示,保持时间,以及扫描频率对闪烁和亮暗程度的影响。
第五讲:键盘检测原理(比较复杂)
1、键盘作用,检测原理,如何消抖,独立键盘检测程序编写。
2、矩阵键盘检测程序编写,涉及到返回值函数调用。
第六讲:1602液晶的使用
1、看手册,管脚、写指令和数据、时序图。
2、编写程序,显示光标
3、编写程序显示字,
4、编写程序,滚动显示字符
第七讲:中断、定时器的原理和应用(比较复杂)
1、中断的概念,AVR单片机的中断
2、定时/计数器1几种模式的寄存器配置
3、定时器1普通模式下实现秒表
4、CTC模式输出方波
5、快速PWM模式输出PWM信号
6、相位修正PWM模式输出PWM信号
第八讲:AD、DA简介及其应用
1、AD简介,AVR内部AD寄存器设置
2、编写程序控制AD读写电位器输出的模拟电压
3、SPI串行通信简介
4、DA简介,AD5300时序图
5、编写程序控制DA输出模拟电压使发光二极管亮度变化
第九讲:TWI(IIC)
1、TWI(IIC)协议简介
2、AVR单片机内部TWI寄存器简介,操作流程
3、具有IIC协议的数字电位器芯片AD5161的简介
4、编写程序用独立键盘控制AD5161输出不同的阻值
第十讲:异步串口UART的简介和程序的编写
1、UART简介
2、AVR单片机内部与UART相关的寄存器的配置
3、编写程序控制AVR单片机和电脑进行通信
4、讲解串行通信时数字和字符之间的区别
第十一讲:PS2键盘、DS1302的工作原理和程序的编写
1、AVR单片机外部中断的介绍
2、PS2键盘的工作原理
3、讲解程序,读取PS2键盘的按键值并在1602液晶上显示
4、DS1302的工作原理
5、讲解程序,控制1302工作并在1602液晶上显示时间
--------------------------------------------------
◆◆MSP430单片机视.频◆◆:

第一部分 硬件结构

第一讲 概述
第二讲 复位、中断和IO
第三讲 异步通信接口1
第四讲 异步通信接口2
  第五讲 定时器
第六讲 FLASH
第七讲 ADC12
第二部分 软件使用
第一讲 软件使用
第三部分 基础程序
第一讲 入门和低功耗
第二讲 时钟和IO
第三讲 比较器和定时器和ADC
第四部分 模块程序
第一讲 控制电路和流水灯
第二讲 键盘
第三讲 蜂鸣器和数码管
第四讲 1602液晶和电平转换
第五讲 EEPROM和18B20和DS1302
第六讲 RS232和RS485接口
第七讲 USB接口
第八讲 ADC和DAC
==============================
◆◆PIC 单片机 视.频◆◆
前言:时间:10分。
内容:MPLAB、PICC软件的安装、USB下载驱动安装。
Lesson1:时间:1小时44分。
内容:PIC单片机简介、软件使用方法、新建工程、软件调试、流水灯程序实现。
Lesson2:时间:27分。
内容:数码管的静态显示与动态显示原理及实现。
Lesson3:时间:53分。
内容:PIC单片机独立键盘检测原理及实现。
Lesson4:时间:45分。
内容:PIC单片机矩阵键盘检测原理及实现。
Lesson5:时间:46分。
内容:PIC单片机控制继电器原理及实现。
Lesson6:时间:2小时20分。
内容:PIC单片机控制DS18B20数字温度传感器原理及实现。
Lesson7:时间:53分。
内容:PIC单片机定时器0的使用方法。
Lesson8:时间:34分。
内容:PIC单片机定时器1的使用方法。
Lesson9:时间:32分。
内容:PIC单片机定时器2的使用方法。
Lesson10:时间:1小时01分。
内容:PIC单片机内部模数转换器AD的使用方法。
Lesson11:时间:1小时50分。
内容:PIC单片机内部SPI通信接口的使用方法。
Lesson12:时间:2小时12分。
内容:PIC单片机内部IIC通信接口的使用方法。
Lesson13:时间:53分。
内容:PIC单片机串行口使用。
===============================
【ARM培训视.频】课程主要内容

1.概念和基本工具:
嵌入式系统基本概念、嵌入式操作系统介绍
嵌入式系统开发的过程和基本结构
Linux基本操作命令的使用
常用工具使用:vi /gcc/gdb等
编写shell程序 和makefile文件结构

2.硬件结构及原理讲解:
ARM7~ARM9体系结构体系结构介绍
ARM7(9)TDMI处理器内核及指令集介绍
讲解SUMSUNG 44B0X 开发板原理图
讲解SUMSUNG 2410 开发板原理图
ARM开发工具ADS的使用

3.Linux部分:
Uclinux,mizilinux系统引导程序bootloader原理和实现过程:Uboot、vivi等
ARM系统空间划分及系统映射方法
bootloader内核下载模式实现 :tftp、Xmoden
linux操作系统原理及组成
介绍linux系统目录组织结构
linux 运行基理,系统运行过程
配置裁减编译linux内核

4.讲解Linux进程特性:
进程属性和状态转换;进程控制与调度;进程相关系统调用,构建守护进程
进程间通信: 进程通信的基本概念,管道、信号、消息队列、信号量、共享内存。
网络通讯接口,socket通信编程。
串口通讯程序和编程实践
多线程程序设计

5.Linux设备驱动:
uClinux内核模块及设备驱动程序开发
介绍linux驱动程序分类和各自操作系统上下层接口
驱动开发实例:蜂鸣器驱动、按键驱动开发、串口驱动、触摸屏驱动、网络驱动开发、USB驱动、液晶屏驱动等。
ARMlinux移植过程。
引导程序Uboot移植。
最小系统启动开发过程。
嵌入式文件系统移植:ramdisk、JFFS2、yaff

6.综合试验:
实现网络文件传输服务程序;
构建嵌入式WEB服务器;
移植mediaplay播放器
开发嵌入式视.频服务器,基于H.264协议
**************************************
另有
=====第一部分单片机相关======
1【单片机多媒体视.频教程】(汇编)非常经典
2【单片机入门与提高精品视.频教程】(汇编),非常适合初学者.
3【手把手教你学单片机 51单片机 C语言 视.频教程 从入门到精通 视.频】
4【数电/模电精品视.频教程】,非常适合初学者.
5【汇编语言精品视.频教程】,非常适合初学者.
6【单片机的C语言编程及电路设计培训视.频教程】
7【标准C语言入门与提高视.频教程】非常经典
8【AVR单片机入门与提高视.频】
9【MSP430单片机经典视.频】
10【PIC单片机经典视.频】
11【电路分析应用技术视.频】
======第二部分电路设计相关=========
【protel99se+DXP/2-0-04 视.频教程+实例】
【Protel(Altium Desinger)】电路设计视.频教程
【Cadence经典视.频教程】
【Orcad经典视.频教程】
【PowerPCB入门视.频教程】
=====第三部分嵌入式硬件部分========
1【ARM linux培训视.频】
2【手把手教你学ARM之LPC2103入门篇 视.频教程】
3【ARM STM32视.频教程 +配套工程源代码】
4【(基于2440开发板的视.频教程)嵌入式Linux视.频培训视.频】
5《学ARM和学单片机一样简单》视.频】
6【ARM嵌入式LPC22-0-0视.频教学视.频教程《嵌入式系统与结构》 】
7【ARM7嵌入式S3C44B0视.频教学《嵌入式微处理器原理及应用》】
8【ARM嵌入式视.频《嵌入式原理与应用》】
9【 台湾嵌入式培训】
10【嵌入式系统开发技术视.频】
11【Altera FPGA 视.频教程】
12【深入浅出玩转FPGA视.频】
13【EDA(CPLD FPGA)入门与提高视.频教程】
14【dsp入门与提高视.频教程】   
15【DSP多媒体教程】
16【vhdl应用技术视.频】
17【PLC精品视.频】                  
18【数控应用经典技术视.频】

=====第四部分嵌入式软件部分====
1,【Windows CE入门与提高视.频教程】       2,【Vxworks应用技术】
3,【linux编程入门与提高视.频教程】  4 【linux工程师软件开发视.频】
5,【eCos、uC/OS-II开发技术】             6,【C++编程入门与提高视.频教程】
7,【嵌入式仿真开发】
8,【JAVA开发视.频】                       9,【.net开发视.频】
→篇幅有限,更多内容请联系
Q_Q:7-5-9-7-3-7-8-3-3
Q_Q: 9_1_0_6_8_4_9_2_8
网站:www.zhixin365.net
MSN:jxb200200@hotmail.com
domerpol 发表于 2011-6-28 09:19:25 | 显示全部楼层
来看看,谢谢分享哈
zlgyp 发表于 2011-11-9 12:33:16 | 显示全部楼层
来看看,谢谢分享哈
tushuguan 发表于 2011-12-28 18:24:02 | 显示全部楼层
huabaas 发表于 2012-1-4 22:29:03 | 显示全部楼层
非常感谢,现在正在学modelsim 很需要
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-25 07:02 , Processed in 0.100172 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表