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