首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的音乐
我的影视
我的邮件
Search
1
科普:Memory Compiler生成的Register file和SRAM有何区别?
89 阅读
2
virtuoso和empyrean alps模拟仿真和混仿教程
87 阅读
3
在IC617中进行xa+vcs数模混仿
86 阅读
4
vcs debug rtl或者netlist 中的loop
52 阅读
5
文档内容搜索哪家强? 15款文件搜索软件横向评测
42 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
python
Docker
vcs
PyQT
STM32
cadence
linux
systemverilog
EDA
Alist
vscode
uos
package
MCU
C
QT
CXL
sed
sv
webdav
bennyhe
累计撰写
344
篇文章
累计收到
31
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的文件
我的图书
我的笔记
我的音乐
我的影视
我的邮件
搜索到
344
篇与
的结果
2025-07-14
循环冗余码校验 (2008-06-07 10:10:56)[
循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC。它是利用除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通讯出现错误。 根据应用环境与习惯的不同,CRC又可分为以下几种标准: ①CRC-12码; ②CRC-16码; ③CRC-CCITT码; ④CRC-32码。 CRC-12码通常用来传送6-bit字符串。CRC-16及CRC-CCITT码则用是来传送8-bit字符,其中CRC-16为美国采用,而CRC-CCITT为欧洲国家所采用。CRC-32码大都被采用在一种称为Point-to-Point的同步传输中。 下面以最常用的CRC-16为例来说明其生成过程。 CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。另一种解释循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC。它是利用除法及余数的原理来作错误侦测(Error Detecting)的。它将要发送的数据比特序列当作一个多项式f(x)的系数,发送时用双方预先约定的生成多项式G(x)去除,求得一个余数多项式,将余数多项式加到数据多项式之后发送到接收端,接收端同样用G(x)去除接收到的数据,进行计算,然后把计算结果和实际接收到的余数多项式数据进行比较,相同的话表示传输正确。CRC校验检错能力强,容易实现,是目前应用最广的检错码编码方式之一。 在国际标准中,根据生成多项式G(x)的不同,CRC又可分为以下几种标准: ①CRC-12码: G(x)=X12+X11+X3+X2+X+1 ②CRC-16码: G(x)=X16+X15+X2+1 ③CRC-CCITT码: G(x)=X16+X12+X5+1 ④CRC-32码: G(x)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+ X 2+X1+X+1 CRC-12码通常用来传送6-bit字符串,CRC-16及CRC-CCITT码则用是来传送8-bit字符,其中CRC-16为美国采用,而CRC-CCITT为欧洲国家所采用。CRC-32码大都被采用在一种称为Point-to-Point的同步传输中。下面以最常用的CRC-16为例来说明其生成过程。 CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。 下面为CRC的计算过程: 1.设置CRC寄存器,并给其赋值FFFF(hex)。 2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。 3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。 4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。 5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。 6.重复第2至第5步直到所有数据全部处理完成。 7.最终CRC寄存器的内容即为CRC值。 附录:编写CRC校验程序的两种办法:一种为计算法,一种为查表法。
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
Impulse CoDeveloper C-to-FPGA Tools(2008-06-06 20:07:35)
IImpulse CoDeveloper C-to-FPGA Tools Impulse C™ allows you to compile C-language directly into optimized logic ready for use with popular FPGA devices. Use the Impulse tools to quickly prototype mixed software/hardware systems and perform design iterations in just minutes or hours, instead of days or weeks.http://www.ict.com.tw/ICDesign/impulse/impulse_flow_uni.jpgCoDeveloper C-to-FPGA Tools" TITLE="Impulse CoDeveloper C-to-FPGA Tools" />Impulse C is fully compatible with Xilinx, Altera and other FPGA development tools.CoDeveloper for XilinxCoDeveloper for Altera
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
锁相环PLL (2008-06-06 20:04:09)
PLL技术,其实书上讲的很清楚~在百度上一查就有,这种问题一般是没有人回的~么叫锁相环锁相环是指一种电路或者模块,它用于在通信的接收机中,其作用是对接收到的信号进行处理,并从其中提取某个时钟的相位信息。或者说,对于接收到的信号,仿制一个时钟信号,使得这两个信号从某种角度来看是同步的(或者说,相干的)。由于锁定情形下(即完成捕捉后),该仿制的时钟信号相对于接收到的信号中的时钟信号具有一定的相差,所以很形象地称其为锁相器。而一般情形下,这种锁相环的三个组成部分和相应的运作机理是:1 鉴相器:用于判断锁相器所输出的时钟信号和接收信号中的时钟的相差的幅度;2 可调相/调频的时钟发生器器:用于根据鉴相器所输出的信号来适当的调节锁相器 内部的时钟输出信号的频率或者相位,使得锁相器完成上述的固定相差功能; 3 环路滤波器:用于对鉴相器的输出信号进行滤波和平滑,大多数情形下是一个低通 滤波器,用于滤除由于数据的变化和其他不稳定因素对整个模块的影响。 从上可以看出,大致有如下框图:可见,是一个负反馈环路结构,所以一般称为锁相环(PLL: Phase Locking Loop)锁相环有很多种类,可以是数字的也可以是模拟的也可以是混合的,可以用于恢复载波也可以用于恢复基带信号时钟
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
用MATLAB生成*.mif(QUARTUS II)内存初始化文件
做FPGA设计时经常要调用芯片内存。特别对于ROM,内存的初始化就显得比较重要。当然你完全可以手工在QUARTUS II打开mif文件的表格里或是在EXCEL中逐个输入,几十项(字)或是近百项(字)你还可以接受,如果上千项或是更多呢?估计能累的人吐血!一般内存的初始化数据都是有规律的,符合一定的函数,我们完全可以用MATLAB来完成(如果没规律只能逐项手工输入了)。首先,我们应该知道*.mif文件的格式。它是文本格式。随便打开一个mif文件,你会发现它具有如下的格式:-- Copyright (C) 1991-2007 Altera Corporation-- Your use of Altera Corporation's design tools, logic functions-- and other software and tools, and its AMPP partner logic-- functions, and any output files from any of the foregoing-- (including device programming or simulation files), and any-- associated documentation or information are expressly subject-- to the terms and conditions of the Altera Program -- Subscription Agreement, Altera MegaCore Function -- Agreement, or other applicable agreement, including,-- without limitation, that your use is for the sole purpose of-- programming logic devices manufactured by Altera and sold by-- Altera or its authorized distributors. Please refer to the-- applicable agreement for further details.-- Quartus II generated Memory Initialization File (.mif)WIDTH=8;DEPTH=256;ADDRESS_RADIX=UNS;DATA_RADIX=UNS;CONTENT BEGIN 0:127; 1:126; 2:126; …… …… 253:126; 254:126; 255:127; END;格式很简单吧。首先根据需要设置每个字的位宽WIDTH和总字数DEPTH。然后设置地址和数据的进制基数ADDRESS_RADIX、DATA_RADIX,建议大家不要修改,就使用无符号数(UNS)。然后用MATLAB生成需要的数据(按上边的格式,注意中间“:”,最后“;”),往CONTENT BEGIN和END中间一贴就行了。下边举例说明MATLAB程序的写法,希望对大家有用。%the walue of cosinefunction data=makedataindex = linspace(0,2*pi,2^8); cos_value = cos(index); cos_value = cos_value * (2^7 -1 ); cos_value = fix(cos_value);cos_value =abs(cos_value);for i=65:192cos_value(i)=cos_value(i)+128;end%///////////////////////////////////////上边的用来生成数据,下边的用于控制格式输出(对大家有用的)number=[0:255];for i=1:256comer(i)=':';endfor i=1:256semi(i)=';';enddata=[number; comer; cos_value; semi];fid=fopen('d:\data.txt','w');fprintf(fid, '%d%c%d%c\n', data);fclose(fid);在D盘下找到data.txt文件,用写字板打开mif文件,将data.txt中的内容贴到CONTENT BEGIN和END中间,然后保存就可以了。
2025年07月14日
0 阅读
0 评论
0 点赞
2025-07-14
用MATLAB生成*.hex(QUARTUS II)内存初始化文件 (2008-06-06 19:58:42)
/data_width:存储器输出数据的位宽//address_width:有多少根地址线//filer_path:hex文件路径//filew_path:verilog文件的路径function gene_ram(data_width,address_width,filer_path,filew_path)pidr=fopen(filer_path,'r');pidw=fopen(filew_path,'w');fprintf(pidw,'module mc8051_rom,\n') ;fprintf(pidw,' rom_adr_i,\n');fprintf(pidw,' clk,\n');fprintf(pidw,' rom_data_o,\n');fprintf(pidw,' input[%d:0] rom_adr_i;\n',address_width-1);fprintf(pidw,' input clk;\n');fprintf(pidw,' output[%d:0] rom_data_o;\n',data_width-1);fprintf(pidw,'\n');fprintf(pidw,' reg[%d:0] rom_data_o;\n',data_width-1);fprintf(pidw,'\n');fprintf(pidw,' always @(posedge clk) begin\n');fprintf(pidw,' case(rom_adr_i)\n');tline = fgetl(pidr);tline = fgetl(pidr);while 1tline = fgetl(pidr);/if ~ischar(tline), break, endstr_length = hex2dec(tline(2:3));if str_length ~= 0address = tline(4:7);address_dec = hex2dec(address);address = dec2hex(address_dec);for i = 1:2:str_length*20h_data=tline(i+9:i+10);fprintf(pidw,' %d\''h%s : rom_data_o <= %d\''h%s;\n',address_width,address,data_width,h_data);address_dec = hex2dec(address);address_dec =address_dec +1;address = dec2hex(address_dec);endendendfprintf(pidw,' default : rom_data_o <= %d\''h0;\n',data_width);fprintf(pidw,' endcase\n');fprintf(pidw,' end\n');fprintf(pidw,'endmodule\n');fclose(pidw);fclose(pidr);
2025年07月14日
0 阅读
0 评论
0 点赞
1
...
45
46
47
...
69