资源描述:
《数字电路模块的VHDL设计幻灯片课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数字电路模块的VHDL设计基本逻辑单元的设计基本门电路表达简单逻辑关系,采用简单的赋值语句就能方便地实现;没有必要采用更复杂的结构。例如:反相器y<=nota;4输入与非门y<=not(a0anda1anda2anda3);与或非y<=not((a1anda2)or(a3anda4));基本逻辑单元的设计为了表达门电路的延迟时间,可以利用after语句表达延迟时间;对基本门电路延迟时间的设计能够较真实地模拟电路信号传输的实际情况,分析时序步骤的正确性,避免竞争冒险;但此类语句对电路综合没有效果;基本逻辑单元的设计
2、例:3输入端异或门参见p.417表5-46architecturertlofkxor3issignaly1:std_logic;beginy1<=axorbxorc;y<=y1after3nswheny1='1'elsey1after5nswheny1='0';endrtl;数据传输控制单元的设计三态总线控制;多路数据选择控制;多路数据分配控制;数据传输控制单元:三态控制单元器件的三态输出描述:引入中间信号,采用条件赋值语句;例:4输入与非门y<=not(a0anda1anda2anda3);改为:y1<=not
3、(a0anda1anda2anda3);y<=y1whenen='1'else'Z';数据传输控制单元:三态控制单向总线控制数据传输控制单元:三态控制单向总线控制74x541p.272图5-57architecturedofk74541issignalen:std_logic;beginen<=not(g1org2);y<=awhenen='1'else(others=>'Z');endd;数据传输控制单元:三态控制双向总线控制数据传输控制单元:三态控制双向总线控制74x245p.273图5-58entityk7
4、4245isport(a,b:inoutstd_logic_vector(7downto0);dir,g:instd_logic);endk74245;architecturedflofk74245isbeginb<=awhen(g='0')and(dir='0')else"ZZZZZZZZ";a<=bwhen(g='0')and(dir='1')else(others=>'Z');enddfl;数据传输控制单元:三态控制注意:双向总线在功能仿真时的输入设置a和b的输入不要同时存在;设置a的输入时,则b为输出,应
5、将b的输入设置为高阻;反过来也是同样;转换传输方向时,应该以双向阻塞作为间隔,避免出现冲突。数据传输控制单元:MUX数据传输控制单元:MUXMUX是电路中控制数据流动最为常用的手段;根据控制量的数值由多路数据中选择一路输出;采用选择赋值能够非常直观地表达MUX的概念;数据传输控制单元:MUX4路8位数据选择器architecturertlofmux4in8bisbeginwithsselecty<=awhen"00",bwhen"01",cwhen"10",dwhen"11",(others=>'U')wheno
6、thers;endrtl;数据传输控制单元:MUXarchitecturebehofmux4in8pisbeginprocess(s,a,b,c,d)begincasesiswhen"00"=>y<=a;when"01"=>y<=b;when"10"=>y<=c;when"11"=>y<=d;whenothers=>y<=(others=>'U');endcase;endprocess;endbeh;采用进程和case语句实现数据编码转换单元该类电路为多路输入/多路输出,将输入的编码转换为对应的输出的编码;采用选
7、择赋值语句可以对各类码制转换电路进行设计。数据编码转换单元:二进制译码器architecturertlofv74x138issignalyli:std_logic_vector(0to7);beginwithaselectyli<="01111111"when"000","10111111"when"001","11011111"when"010","11101111"when"011","11110111"when"100","11111011"when"101","11111101"when"110","11
8、111110"when"111","11111111"whenothers;yl<=yLiwhen(g1andnotg2alandnotg2bl)=‘1’else“11111111”;endrtl;数据编码转换单元:8421-余3码architecturertlofkbcd_ex3isbeginwithaselecty<="0011"when"0000","0100"wh