⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decoder.do

📁 Matlab 与 modelsim 协同仿真的例程设置好modelsim运行环境后
💻 DO
字号:
proc vsimulink {args} {  lappend sllibarg -foreign \{simlinkserver \{C:/MATLAB/toolbox/modelsim/windows32/simulinklink.dll\}  if {[catch {lsearch -exact $args -socket} idx]==0  && $idx >= 0} {    set socket [lindex $args [expr {$idx + 1}]]    set args [lreplace $args $idx [expr {$idx + 1}]]    append socketarg " \; -socket " "$socket"    lappend sllibarg $socketarg  }  lappend sllibarg \}  set args [linsert $args 0 vsim]  lappend args [join $sllibarg]  uplevel 1 [join $args]}proc vsimmatlab {args} {  lappend mllibarg -foreign \{matlabclient \{C:/MATLAB/toolbox/modelsim/windows32/matlablink.dll\}  lappend mllibarg \}  lappend mlinput   lappend mlinput [join $args]  lappend mlinput [join $mllibarg]  set mlinput [linsert $mlinput 0 vsim]  uplevel 1 [join $mlinput]}proc wrapverilog {args} {  set nargs [llength $args]  if {($nargs != 1) && ($nargs != 2)} {      error "** Error: (wrapverilog) Wrong number of arguments; Usage is wrapverilog modulename or wrapverilog -nocompile modulename"  }    if {([lindex $args 0] == "-nocompile") && ($nargs == 2)} then {      set modulename [lindex $args 1]      set compileflag 0  } elseif {$nargs == 1} {      set modulename [lindex $args 0]      set compileflag 1  } else {      error "** Error: (wrapverilog) Wrong arguments; Usage is wrapverilog modulename or wrapverilog -nocompile modulename"  }  set component [vgencomp $modulename]  if {[string first "** Error:" $component] != -1} {      error "** Error: (wrapverilog) ModelSim vgencomp cannot find module $modulename"  }  set modulename [string tolower $modulename]  set fname "[string tolower $modulename]_wrap.vhd"  set fid [open $fname w]  if {$fid == -1} {      error "** Error: (wrapverilog) Cannot open file $fname"  }  puts $fid "----------------------------------------------------------------"  puts $fid "-- Module $modulename VHDL Wrapper"  puts $fid "--"  puts $fid "-- Generated by The MathWorks wrapverilog tcl command"  puts $fid "--"  puts $fid "-- Generated on: [clock format [clock seconds] -format {%Y-%m-%d %H:%M:%S}]"  puts $fid "--"  puts $fid "----------------------------------------------------------------"  puts $fid "LIBRARY IEEE;"  puts $fid "  USE IEEE.std_logic_1164.all;"  puts $fid ""  puts -nonewline $fid "ENTITY $modulename"  puts $fid "_wrap IS"  set firsteol [string first \n $component]  set lasteol  [string last  \n $component]  # Output generics and port map  puts $fid [string range $component $firsteol $lasteol]  puts -nonewline $fid "END $modulename"  puts $fid "_wrap;"  puts $fid ""  puts -nonewline $fid "ARCHITECTURE rtl OF $modulename"  puts $fid "_wrap IS"  puts $fid ""  puts $fid "$component"  puts $fid ""  puts $fid "FOR ALL : $modulename"  puts -nonewline $fid "  USE ENTITY work.$modulename"  puts $fid "(ignored);"  puts $fid ""  puts $fid "BEGIN"    set portbeg [string first "port(" $component]  if {$portbeg != -1} {      puts $fid "  u_$modulename: $modulename"      puts $fid "    PORT MAP ("      set portmap [string range $component $portbeg $lasteol]      set firsteol [string first \n $portmap]      set portmap [string trimleft [string range $portmap $firsteol end]]      set portnameend [string wordend $portmap 0]      set portname [string range $portmap 0 $portnameend]      set portname [string trimright $portname ":"]      puts -nonewline $fid "      $portname => $portname"      set firsteol [string first \n $portmap]	        set portmap [string trimleft [string range $portmap $firsteol end]]      set errcnt 0      while {([string length $portmap] != 0) &&	     ([string index $portmap 0] != ")")} {	  puts $fid ","	  set portnameend [string wordend $portmap 0]	  set portname [string range $portmap 0 $portnameend]     set portname [string trimright $portname ":"]	  puts -nonewline $fid "      $portname => $portname"	  set firsteol [string first \n $portmap]	  	  set portmap [string trimleft [string range $portmap $firsteol end]]	  incr errcnt	  if {$errcnt == 4096} {	      error "** Error: (wrapverilog) Failure trying to parse more than 4096 ports for $modulename"	  }      }	        puts $fid ""      puts $fid "    );"  }  puts $fid ""  puts $fid "END rtl;"    close $fid  if {$compileflag} {      uplevel 1 vcom $fname  }}cd C:/MATLAB/toolbox/modelsim/modelsimdemos/vhdl/manchestercatch {wm geometry . 500x200+0+0}vlib workvcom -performdefaultbinding C:/MATLAB/toolbox/modelsim/modelsimdemos/vhdl/manchester/decoder.vhdvsimmatlab work.decodermatlabtb decoder -mfunc Manchester_decoder -socket 1037run 3000quit -f

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -