首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的硬盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的书签
我的微博
Search
1
在IC617中进行xa+vcs数模混仿
84 阅读
2
科普:Memory Compiler生成的Register file和SRAM有何区别?
74 阅读
3
virtuoso和empyrean alps模拟仿真和混仿教程
74 阅读
4
后仿中$setup,$hold与$setuphold
45 阅读
5
文档内容搜索哪家强? 15款文件搜索软件横向评测
35 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
python
Docker
vscode
linux
systemverilog
vcs
STM32
PyQT
EDA
FPGA
gvim
cadence
Alist
xilinx
UVM
uos
macos
package
MCU
risc-v
bennyhe
累计撰写
378
篇文章
累计收到
31
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的硬盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的书签
我的微博
搜索到
168
篇与
的结果
2025-07-14
verilog的可综合设计(1) (2008-07-01 22:07:02)
Averilog的流行,有两方面的原因;B verilog与VHDL相比的优点C典型的verilog模块D verilog语法要点A) verilog的流行,有两方面的原因:1它是cadence的模拟器verilog-XL的基础,cadence的广泛流行使得verilog在90年代深入人心;2它在硅谷获得广泛使用;B) verilog与VHDL相比的优点二者的关系仿佛C与FORTRAN,具体而言:1 verilog的代码效率更高: 比较明显的对比:VHDL在描述一个实体时采用entity/architecture模式,verilog在描述一个实体时只需用一个"module/edumodule"语句块.此外verilog的高效性还在很多地方体现出来;2 verilog支持二进制的加减运算:VHDL在进行二进制的加减运算时使用conv_*函数或者进行其他的定义,总之必须通知编译器;verilog直接用形如"c=a+b"的表示二进制的加减运算;3综合时可控制性好:VHDL对信号不加区分地定义为"signal",而verilog区分为register类型的和wire类型的;但是也有人支持VHDL,认为verilog和VHDL的关系仿佛C和C++.C)典型的verilog模块讨论以下典型电路的verilog描述:*与非门;*加法器; //即全加器D触发器;计数器; //*分频的counterlatch;*时序机;*RAM; //用synopsys的*模块引用;*预编译;*与非门的verilog描述如下://verilog使用和C语言相同的注释方法module nd02(a1,a2,zn);//一个verilog模块总是以module开始,以endmodule 结束,nd02是模块名,a1,a2,zn是模块的3个输入输出信号input a1,a2; //告诉编译器a1,a2对此模块而言是输入,并且数据类型是"bit"output zn; //告诉编译器zn对此模块而言是输出,数据类型也是"bit"nand (zn,a1,a2); //我理解nand是运算符,我们不必深究verilog中的正式术语是什么了吧,总之这种形式表示zn=~(a1 && a2);你一定已经想到类似的运算符还有"not","and","or","nor","xor"了吧;除了"not",括号里的信号数可以任意,例如or (z,f,g,h)表示z=f || g || h,并且延时是3个单位时间,#x表示延时x个单位时间;endmodule*加法器的verilog描述如下:module ad03d1(A,B,CI,S,CO) ;input [2:0] A,B; //表示A,B是输入信号,并且是3位矢量,上界是2,下界是0input CI;output [2:0] S;output CO;assign {CO,S}=A+B+CI;//一对"{"和"}"表示链接,即将CO和S合并成4位矢量endmodule*带异步清零端的D触发器的verilog描述如下:module dfctnb (d,cp,cdn,q,qn);input d,cp,cdn;output q,qn;reg q,qn; //关键字"reg"表示q和qn是"register"类型的信号;verilog中有两种类型的信号:"register"类型和"wire"类型.你可以简单地把register类型的信号想象为某个D触发器的输出,而wire类型的的信号是组合逻辑的输出.二者的最大区别在于:你可以对register类型的信号进行定时赋值(用wait语句在特定时刻的赋值,详见下面always语句),而对于wire类型的信号则不可.always wait (cdn==0) //表示每当cdn=0时,将要对D触发器清零,"always"和"wait"嵌套,"wait"和"@"是verilog的两个关键字,表示一旦有某事发生;则执行下面的语句块,"always"有点象C语言中的"if ... then...","wait"和"@"的区别:请参考本模块.wait表示本语句块的进程停止,直到"cdn=0"的条件出现才继续;我理解在verilog中,每个最外层语句块都是一个*的进程;"@"(请看下个always语句)也表示本语句块的进程停止,直到后面定义"posedge cp"(即出现cp的上升沿)的事件出现才继续;也许wait和@可以合二为一吧,但至少到目前verilog中wait表示"条件",@表示"事件";具体运用中,wait总是用于类似"wait(xxx=1)"之类的场合,@总是用于类似"@(xxx)"或"@(posedge/negedge xxx)"之类的场合整句话的意思是"每当cdn等于0时,则作以下事情"begin //begin...end结构的用法类似于pascal语言 q=0; qn=1; wait (cdn==1);endalways @ (posedge cp)//"@(posedge cp)"中有两个关键字:"@ (x)"表示"每当事件x发生","posedge x"表示"x的上升沿,"negedge x"表示"x的下降沿",整句话的意思是"每当cp的上升沿,则作以下事情" if (cdn) //如果cdn=1(意味着清零端无效) begin q=d; qn=~q;//"~"表示反相 endendmodule*计数器的verilog描述如下:module count(in,set,cp,out) ;//此计数器,在cp的上升沿将输入赋给输出,在cp的上升沿使输出加一input [15:0] in;input set,cp;output [15:0] out;reg [15:0] out;always @ (posedge set) out = in;always @(posedge cp) out = out+1; //verilog容许一个信号同时出现在等号两端,只要它是reg类型的endmodule*latch的描述如下:always @(clk or d)if (clk) q = d; *时序机的verilog描述如下:always @(posedge CLK) //D是下一个状态,Q是当前状态,e1,e2是输入,a,b是输出Q=D;always @(Q or othercase) begin //当Q变化或输入e1,e2变化时D要相应变化D = Q; //note1a = 0;b = 0;......case(Q) q1:begin q1 action; if(e1)D=d1; if(e2)D=d2; else D=d3; a = 1; //note 2 end q2:begin b = 1; ...... end default:begin a = 0; b = 0; ......endend---annotations---note 1: This is a custom expression,after reset,D should be equal to Q;note 2: In this state machine,a is only equal to 1 at state q1,in other state,a is equal to 0;RAM的verilog描述如下:module ram(din,ain,dout,aout,rd,wr);//这是一个双口RAM,分别有:输入端:输入地址ain;输入数据din;上升沿有效的写信号wr;/输出端:输出地址aout;输出数据dout;高电平有效的读信号rd;inout [7:0] din;input [7:0] ain,aout;input rd,wr;output [7:0] dout;reg [7:0] memory [0:255]; //请注意这是存储阵列的描述方法,描述了一个共有256个字的存储阵列,每个字是8位assign dout = rd ? memory[aout] : 8'bz; //"assign"关键字表示并行赋值语句的开始"?"运算符的作用和在C语言中一样"8'bz"是一个常量,表示一个字节的高阻态,其中8表示长度是8bit,"'"是固定分割符,"b"表示后面的数据是以比特形式给出的,"z"表示高阻;举例:4'ha表示长4bit的数"1010"。类似的还可举出5'b10111,6'o33等等always @(posedge wr)memory[ain] = din;endmodule*模块引用假设在前面(可以是别的模块)定义了module ram(din,ain,dout,aout,rd,wr),则引用此模块时只需写ram myram(din_in_map,ain_in_map,dout_in_map,aout_in_map,rd_in_map,wr_in_map);//其中"ram"是所引用的module名,"myram"是你起的instance名,"din_in_map"等等是图中的节点名,和器件(module)中的"din..."进行"虚实结合";*预编译类似C语言,只需写include "<pathname:filename>",反上撇号""是verilog的预编译符,类似C中的"#".D) verilog语法要点*基本原则设计时应该把你的系统划分为计数器,触发器,时序机,组合逻辑等等可综合的单元,对此不同的IC公司和EDA开发商可能根据自己的见解和经验提出不同的要求,并且对verilog程序的细节进行自己的规定,但有一点是对的:即写硬件描述语言不象写C语言那样符合语法就行.单单符合verilog语法的程序可能被拒绝综合,甚至被拒绝模拟;*最外层可以写什么?这里所说的最外层是指module语句后的第一层,在这一层可以写这些可执行语句:assign和nand等定义组合逻辑的语句,always语句,模块引用语句,一些以"$"开头的系统定义语句.特别注意不可以写if语句.if语句只能放在always内部.不推荐写wait语句,因为不能综合.*不可以在多个always语句中对一个信号赋值.
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
VC++ Error spawning cl.exe 解决办法 (2008-06-27 17:23:04)
问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。如果你是按照初始路径安装vc6.0的,路径应为:executatble files:C:\Program Files\Microsoft Visual Studio\Common\MSDev98\BinC:\Program Files\Microsoft Visual Studio\VC98\BINC:\Program Files\Microsoft Visual Studio\Common\TOOLSC:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNTinclude files:C:\Program Files\Microsoft Visual Studio\VC98\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDElibrary files:C:\Program Files\Microsoft Visual Studio\VC98\LIBC:\Program Files\Microsoft Visual Studio\VC98\MFC\LIBsource files:C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRCC:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDEC:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC如果你装在其他盘里,则仿照其路径变通就行(我就是装在D盘)。关键是microsoft visual studio\ 后面的东西要相同。本人深受其害,重装多次不管用,上面中文部分为高手借鉴,下面路径为本人深思所得,终于解决。与君分享。
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
如何删除系统服务 (2008-06-22 12:41:08)
删除的办法有两个:办法一: 用sc.exe这个Windows命令 开始——运行——cmd.exe,然后输入sc就可以看到了。使用办法很简单: sc delete "服务名" (如果服务名中间有空格,就需要前后加引号) 如针对上面的: sc delete KSD2Service 方法二:直接进行注册表编辑 打开注册表编辑器,找到下面的键值: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 一般服务会以相同的名字在这里显示一个主健,直接删除相关的键值便可。 三、特殊情况 1、如果服务显示的是rundll32.exe,并且这个文件是位于system32目录下,那么就不能删除这个rundll32.exe文件,它是Windows系统的文件。这时只要清除相关的服务就可以了 2、如果一个服务删除了马上又自动建立了,说明后台有进程在监视、保护。需要先在进程管理器中杀掉相应的进程,或者启动后按F8,到安全模式下删除。 摘自:百度空间
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
大容量U盘启动制作工具 此博文包含图片 (2008-06-22 10:44:24)
此软件由Max亲自测试,由于此程序制作的启动程序比USBBOOT的稳定性及兼容性都要高,并且在我测试的机器中引导出来的USBZIP模式都可以成功的识别为A盘,最值的一提的是该程序支持超过2G的大U盘制作为USBZIP模式,为了测试此软件,我还特意花了400大洋买了个2G的大U盘来测试,不过还是值的该U盘的读写速度在20M/秒,这是其它的U盘无法具备的。盘版制作教程,注意:操作前请备份好U盘的资料。首先下载上面的Flashboot将U盘跟据下面的教程制作打开软件的界面,点击下一步继续。图1http://pzz.cn/bbs/attachment/Mon_0701/8_2_85771b362a5cc4f.jpg选择您要通过哪媒体创建U盘启动,由于我们制作的是DOS启动,所以我们选择“创建带迷你DOS系统的可启动闪存盘。图2http://pzz.cn/bbs/attachment/Mon_0701/8_2_cf105f94fb13164.jpg请选择您的启动文件来源,如果没有,可以选择“任何基于DOS的软盘或软盘镜像” 图3http://pzz.cn/bbs/attachment/Mon_0701/8_2_03bd1fe18e8727e.jpg然后在下图中选择你的DOS启动盘的软盘镜像,如果您没有,可以选择FLASHBOOT安装目录中的由我们集成的DOS98.IMG镜像,此镜像已包含MSDOS 7.1的启动文件。图4http://pzz.cn/bbs/attachment/Mon_0701/8_2_55be5a687dacd6d.jpg然后在下图中选择您的U盘的盘符,如果未找到,请点击“刷新列表”图5http://pzz.cn/bbs/attachment/Mon_0701/8_2_2b5bd689724658a.jpg在这一步选择U盘的启动模式,大家的都USB-ZIP的启动模式相对来说兼容性,及稳定性都相对要好,而且启动后就直接是A盘符,这样大大的方便了我们制作DOS启动。所以这里我们建议您选择USB-ZIP模式,如果您要保留U盘的资料请先选中启动模式如:USB-ZIP,然后再选择“保留磁盘数据”这样可以不格式化U盘而直接制作引导了。图6http://pzz.cn/bbs/attachment/Mon_0701/8_2_20417bbfa8ece5c.jpg点击“完成”待程序写入完文件后,即可关闭该程序,这样您的U盘已经具备启动功能了。图7http://pzz.cn/bbs/attachment/Mon_0701/8_2_043a8d158dd1183.jpgMaxDOS v5.8s U盘版发布,全面解决大U盘制作问题。U盘启动制作工具Flashboot。
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
0磁道修复 (2008-06-21 19:54:26)
管你前面的工作做得如何的好,硬盘终究有失效的一天,常见的问题主要包括磁盘坏道、分区表出错以及0磁道受损等等。当硬盘出现这些故障时,是否就意味着要报废呢?当然不是。下面就来谈谈如何尽我们所能来拯救故障硬盘。 ★修复硬盘坏道 硬盘坏道包括逻辑坏道与物理坏道,前者可以通过特定软件来进行修复,并可以继续使用;而后者则是真正物理意义上的损坏,轻则损失一定的磁盘空间,重则硬盘无药可救,彻底报废。修复软坏道的方法很简单,Windows自带的磁盘修复工具或者高级格式化就能够很好的处理这类问题。而对于硬坏道,我们可以使用Low Format等软件,通过对硬盘进行低级格式化的方法试图修复。 运行Low Format,选择目标硬盘ID并进行低级格式化(如图1)。所谓低级格式化,指的是将空白的磁盘划分出柱面和磁道,然后再将磁道划分为若干个扇区,每个扇区又划分出标识部分ID、间隔区GAP和数据区DATA等。低级格式化只能在DOS环境下完成,而且只能针对一块硬盘而不能支持单独的某一个分区。有些坏磁道和坏扇区能够通过低级格式化来修复,但对于真正的硬盘磁盘表面物理划伤则无法进行修复,这只有通过普通的Format高级格式化来标出坏扇区的位置,以便让操作系统不去使用。需要注意的是,低级格式化是一种损耗性操作,对硬盘的寿命有一定的负面影响。所以,如无必要,用户们尽量不要低级格式化硬盘。 图1 LOW Format的主界面 ★0磁道的修复 如果在对硬盘进行格式化时,系统提示“Track 0 Bad”的话,那么意味着硬盘的0磁道损坏了。其实0磁道损害也是坏道的问题,只不过关键的0磁道也有坏道而已。此时,我们所要做的就是利用PCTools 9.0工具包中的DE.exe命令重新标记0磁道的位置。 为了修改0磁道文字,首先要去掉DE.exe命令的只读属性,我们必须把“Configuration”下“Read Only”前的钩消去。随后在主菜单“Select”中进入“Drive type”,并选择下一级的“Physical-Hard disk”。回车之后,我们的主菜单就会出现“Partition Table(分区表)”,找到“Beginning Cylinder(起始柱面)”这一项,它代表硬盘的0柱面开始,也就是0磁道的位置。此时大家只要稍微动一下,把它改为1或者2即可。需要注意的是,DE.exe命令仅适用于FAT16格式的硬盘,FAT32格式的硬盘则需要先通过PartitionMagic等磁盘工具,将其转换为FAT16格式,然后再对其进行修改。 ★修复分区表 硬盘主引导记录所在的扇区也是病毒重点攻击的地方,通过破坏主引导扇区中的DPT(分区表),即可轻易地损毁硬盘分区信息。分区表的损坏通常来说不是物理损坏,而是分区数据被破坏。因此,我们可以用软件来修复。 DiskMan是一款小巧的硬盘分区表维护工具,大小只有108KB,但功能却非常强大,其中最重要的一项功能就是重建分区表了。如果你的硬盘分区表被磁盘分区软件或病毒严重破坏,引致硬盘和系统瘫痪,DiskMan可通过未被破坏的分区引导记录信息重新建立分区表。在菜单的工具栏中选择“重建分区”,DiskMan即开始搜索并重建分区。DiskMan将首先搜索0柱面0磁头从2扇区开始的隐含扇区,寻找被病毒挪动过的分区表。接下来搜索每个磁头的第一个扇区,搜索过程可以采用“自动”或“交互”两种方式进行。自动方式保留发现的每一个分区,适用于大多数情况,而交互方式对发现的每一个分区都给出提示,由用户选择是否保留。当自动方式重建的分区表不正确时,可以采用交互方式重新搜索。 此外,大部分杀毒软件如KV3000和瑞星等,都带了修复分区表的功能,而且使用效果也不错。不过,为了提高重建分区表的成功率,笔者建议大家还是在硬盘分区之后就备份分区表,当日后出现问题时,直接还原之前的备份就可以了。 以KV3000为例,用KV3000密匙盘引导系统,在DOS状态下键入“KV3000 /b”并回车,插入一张干净的软盘按“Y”键,硬盘分区表数据“hdpt.dat”即刻备份至该软盘。恢复分区表时,同样用KV3000密匙盘引导系统,在DOS状态下键入“KV3000 /hdpt.dat”并回车,硬盘分区表信息便恢复至硬盘中了。
2025年07月14日
0 阅读
0 评论
0 点赞
1
...
11
12
13
...
34