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

📄 manchester.do

📁 Matlab 与 modelsim 协同仿真的例程设置好modelsim运行环境后
💻 DO
字号:
set matlabroot ""set socketport "4442"set simulinklink ""set matlablink ""proc setSharedLib {args} {    global tcl_platform    global matlabroot    global simulinklink    global matlablink    set arch ""    if {$tcl_platform(platform) == "unix"} {        if {$tcl_platform(os) == "Linux"} {            set arch "glnx86"        } elseif {$tcl_platform(os) == "Solaris"} {            set arch "sol2"        } elseif {$tcl_platform(os) == "SunOS"} {            set arch "sol2"        } else {            error "**Error: Unsupported unix platform!"        }        if {$matlabroot == ""} {            set matlabroot "/sandbox/lluo/Adsphw/matlab"        }    } elseif {$tcl_platform(platform) == "windows" } {        set arch "win32"        if {$matlabroot == ""} {            set matlabroot "S:/Adsphw/matlab"        }    } else {        error "**Error: Unsupported platform (macintosh)!"    }    set mathlabPath "$matlabroot/toolbox/modelsim/$arch"    if {$arch == "win32"} {        set simulinklink [file join $mathlabPath simulinklink.dll]        set matlablink [file join $mathlabPath matlablink.dll]    } else {        set simulinklink [file join $mathlabPath simulinklink.so]        set matlablink [file join $mathlabPath matlablink.so]    }}proc vsimulink {args} {  global simulinklink  global socketport  set foreign [list simlinkserver $simulinklink]  if {![catch {lsearch -exact $args -socket} idx] && $idx >= 0} {    set socketport [lindex $args [expr {$idx + 1}]]    set args [lreplace $args $idx [expr {$idx + 1}]]  }  lappend foreign \; -socket $socketport  set foreign [join $foreign];  set args [linsert $args 0 vsim]  lappend args -foreign $foreign  uplevel 1 $args}proc vsimmatlab {args} {  global matlablink  set foreign [list matlabclient $matlablink]  lappend foreign \;  set foreign [join $foreign];  set args [linsert $args 0 vsim]  lappend args -foreign $foreign  uplevel 1 $args}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]      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]	  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  }}setSharedLibcatch { wm geometry . 500x200+0+0 }vlib workset vhdlSrcPath "$matlabroot/toolbox/modelsim/modelsimdemos/vhdl/manchester"vcom -performdefaultbinding $vhdlSrcPath/statecnt.vhdvcom -performdefaultbinding $vhdlSrcPath/iqconv.vhdvcom -performdefaultbinding $vhdlSrcPath/decoder.vhdvcom -performdefaultbinding $vhdlSrcPath/manchester.vhdvsimulink work.manchester

⌨️ 快捷键说明

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