当前位置: 代码迷 >> 综合 >> VHDL port map和reg/wire
  详细解决方案

VHDL port map和reg/wire

热度:14   发布时间:2023-12-18 19:29:19.0

port map和reg/wire(VHDL)


1、verilog中有reg和wire。vhdl只有signal。
对于vhdl,笔者认为可以这样理解:一个signal对应于一个信号导线,如果在一个沿触发的process中对一个signal赋值,那么被赋值和赋值的信号线之间存在一个D触发器。除此外的赋值都可以看成是组合逻辑的相连。
对于数字电路时寄存器输出还是组合逻辑输出对于仿真及其重要。
比如,一个D触发器,其输入是个组合逻辑,且在D触发器的敏感沿输入发生变化,那么这个就要用建立时间、保持时间来判断,而modelsim对于这种情况貌似是按照组合逻辑变化完成后的值作为D触发器的输入的。
那么对于寄存器输出,俨然是取变化前的值,这个可以用移位寄存器来直观的理解。
由于fpga开发过程要求输入输出都过一个D触发器缓存,所以在写testbench的时候就要注意,激励信号也要是沿触发输出。
对应于FPGA的结构,一个CLB,其中有LUT、选择器、D触发器等组成,那么一个信号作为输出时,是组合逻辑输出还是时序逻辑输出(寄存器输出),对应于硬件是有个选择器来决定的,LUT等产生的逻辑是否通过D触发器。
2、
vhdl中的port map,这里想说的是,如果某个实体有几个多余的管脚是没有用的(这种实体往往是通过ipcore产生的),那么借助于关键字open。
比如,通过ipcore产生了一个fifo,它有两个输出时full : out std_logic; empty : out std_logic;如果不想用这两个管脚,可以这样:

uut_fifo : ipcore_fifo_256x8 port map(
clk    =>  clk            , 
rst    =>  rst            ,
din    =>  gub_data_out    ,
wr_en  =>  gub_fifo1_wr    ,
rd_en  =>  gub_fifo1_rd    ,
dout   =>  fifo1_mux1_data  ,
full   =>  open           ,
empty  =>  open           );

http://blog.sina.com.cn/s/blog_4bbcda6d0100i248.html

  相关解决方案