"); //-->
VHDL中,Component端口映射有2种方法:位置映射和名称映射。前者书写简单,但后者代码可读性更高,且不容易出错。Hustzq就习惯于后一种方法。
如果component中端口的比特位数和实际电路中的位宽一致,那么直接映射就可以了。那么,不一致的时候如何处理呢?
实例:用lpm_bustri做总线控制,一个元件控制总线的地址数据线(32位)和控制信号线(若干条)。
用AHDL(部分代码):
--数据/地址线32位
AD_B[31..0] = lpm_bustri.result[31..0];
AD_A[31..0] = lpm_bustri.tridATA[31..0];
lpm_bustri.data[31..0] = AD_B[31..0];
--控制字4位
C _B[3..0] = lpm_bustri.result[35..32];
C _A[3..0] = lpm_bustri.tridata[35..32];
lpm_bustri.data[35..32] = C _B[3..0];
--控制信号线2条
F_B = lpm_bustri.result[36];
F_A = lpm_bustri.tridata[36];
lpm_bustri.data[36] = F_B;
In_B = lpm_bustri.result[37];
In_A = lpm_bustri.tridata[37];
lpm_bustri.data[37] = In_B;
用VHDL(部分代码):
result(31 DOWNTO 0) => AD_B,
tridata(31 DOWNTO 0) =>AD_A,
data(31 DOWNTO 0) => AD_B,
result(35 DOWNTO 32) => C_B,
tridata(35 DOWNTO 32) => C_A,
data(35 DOWNTO 32) => C_B,
result(36) => F_B,
tridata(36) => F_A,
data(36) => F_B,
result(37) => In_B,
tridata(37) => In_A,
data(37) => In_B,
第一次接触AHDL。2种语言同时使用时还真容易搞混淆,VHDL差点写成“result[31..0] => AD_B”。总体感觉,VHDL的语法是很严格的,用什么数据类型、位宽多少都必须先定义,否则就是错误,AHDL就要宽松些。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
高性能计算不仅仅是搭乘人工智能的顺风车
1.2V I/O SPI NOR 闪存降低整体系统成本与功耗
敲击式门铃电路(CD4013、CD4017)
[Android开发视频教学]常用控件(三)(13)
密码式电子门铃(CD4093B)
钻石传感器测量纳米级磁性
字里行间:3D NAND闪存的下一个前沿
谁来做上海“硅谷”?四大研发基地竞相角逐
多功能语音电子电话号码薄的研制
能表明来客身份的门铃(KD56024)
安森美将获4.5亿欧元政府资助,用于捷克先进硅晶体器件制造厂
保护的差异:以太网供电与数据线供电
曾经无限风光 再看IT业10大过山车人物
[Android开发视频教学]Android常见控件(二)(12)
[Android开发视频教学]Handler的使用(一)(14)
多通道故障信号的采集处理及实现
今昔对比:磁芯
寻找5.5G和6G过程控制采用的路径
多媒体网关系统中模拟电话语音卡的设计
触摸式双音调门铃(CD4069)
能识别来客和家人的门铃(CD4069、KD9300)
保护电信应用中的以太网接口免受常见高能浪涌的影响
[Android开发视频教学]Handler的使用(二)(15)
[Android开发视频教学]SQLite使用方法(16)
5年间的人与事:10大早熟技术
华人黑客MIT学生黄欣国:挑战微软与版权尺度极
多核DSP的BootLoader程序的实现
如何识别非典型....
多路MPEG-4监控系统的设计与实现
全硅RC缓冲器,用于碳化硅MOSFET