⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dec.vhd

📁 it is used to understand the basic working of a BCH encoder/Decoder
💻 VHD
📖 第 1 页 / 共 3 页
字号:
	SIGNAL l, lin, lcarry, lxor, lcomp: BIT_VECTOR(0 TO sizel-1);
	SIGNAL lce: BIT;
  BEGIN
	dout<= lcomp(sizel-1);
	-- compare --> lcomp(sizel-1)<= (cb>=l)
	lcomp(0)<= NOT l(0) OR cb(0);
	gencomp:
	FOR i IN 1 TO sizel-1 GENERATE
	  lcomp(i)<= (lcomp(i-1) AND (NOT l(i) OR cb(i)))  OR  (NOT l(i) AND cb(i));
	END GENERATE;

	-- register l substractor; lin<= 2*cb-l+1 <=> { lin<=2*cb+2+NOT(l) }
	lin(0)<= NOT l(0);
	lin(1) <= cb(0) XOR l(1);
	lcarry(1)<= cb(0) OR NOT l(1);
	      genl:
	FOR i IN 2 TO sizel-1 GENERATE
		lxor(i)<= cb(i-1) XOR NOT l(i);
		lin(i)<= lxor(i) XOR lcarry(i-1);
		lcarry(i)<= (NOT l(i) AND cb(i-1)) OR (lxor(i) AND lcarry(i-1));
	END GENERATE;
	lce<= ce AND bsel;
  PROCESS BEGIN  
	WAIT UNTIL clk'EVENT AND clk='1';
	-- l register 
	IF reset='1' THEN
		l(0)<= bsel;   -- if Syn1=0 l<= 0, else l<=1
	ELSIF lce='1' THEN
		l(0)<= lin(0);
	END IF;

	FOR i IN 1 TO sizel-1 LOOP
	  IF reset='1' THEN
		l(i)<= '0';
	  ELSIF lce='1' THEN
		l(i)<= lin(i);
	  END IF;
	END LOOP;
  END PROCESS;
END dcla;

-------------------------------------------------------------------------------	
-- control system and counter

	USE WORK.const.ALL;
ENTITY dcount IS
PORT (clk, reset, drnzero: IN BIT;
	bsel, bufCe, bufkCe, chpe, msmpe, snce, synpe, vdout, vdout1,c0first, cce, caLast1, cbBeg, dringPe, cei: OUT BIT);
		-- vdout - delaied by one clock vdout11
END dcount;

ARCHITECTURE dcounta OF dcount IS
	COMPONENT drd1ce -- single register with clock enable
		PORT ( clk, ce, din: IN BIT; dout: OUT BIT);
		END COMPONENT; 
	  	FOR ALL: drd1ce USE ENTITY WORK.drd1ce (drd1cea);
	COMPONENT dca  -- counter a
		PORT (clk, reset: IN BIT; cRes: OUT BIT;
		dout: OUT BIT_VECTOR(0 TO sizea-1));	
		END COMPONENT; 
	  	FOR ALL: dca USE ENTITY WORK.dca (dcaa);
	COMPONENT dcb  -- counter b
		PORT (clk, ce, reset: IN BIT;
		dout: OUT BIT_VECTOR(0 TO sizeb-1));	
		END COMPONENT; 
	  	FOR ALL: dcb USE ENTITY WORK.dcb (dcba);
	COMPONENT dcl -- l (degree of error polynomial in BMA) circuit  
		PORT (clk, ce, reset, bsel: IN BIT; -- dout=1 if l<= cb
		cb: BIT_VECTOR(0 TO sizeb-1); dout: OUT BIT); 
		END COMPONENT; 
	  	FOR ALL: dcL USE ENTITY WORK.dcL (dcLa);
	COMPONENT dci  -- intereleave counter
		PORT (clk, reset: IN BIT; dout: OUT BIT); -- dout=1 if count=0
		END COMPONENT; 
	  	FOR ALL: dci USE ENTITY WORK.dci (dcia);
	SIGNAL cceR, cceS, cceSR, dringCe2, dringPe2: BIT;

	-- VHDL Template
	SIGNAL ca: BIT_VECTOR(0 TO sizea-1); -- counter a
	SIGNAL cb: BIT_VECTOR(0 TO sizeb-1); --  count= ca+ iteration*cb
	SIGNAL res, bsel1, caRes, bufR, bufRa, bufRb, bufS, bufSa, bufSb, bufSR: BIT; 
	SIGNAL chpe1, chpe1a, chpe1b, synpe1,  msmpe1, cei1: BIT;
	-- cei - interleave clock enable
	SIGNAL vdout11, vdout11a, vdout1R, vdout1Ra, vdout1Rb: BIT;
	SIGNAL vdout1S, vdout1Sa, vdout1Sb: BIT;
	SIGNAL ca0, caLast,caNextLast, cb0, cLast, cLasta, cLastb, lCe, lcomp: BIT;
	SIGNAL bufkCeCe, one, vdout11Ce, vdout11In, bufCe1, bufkCe1: BIT;
	SIGNAL noFirstVdoutIn, noFirstVdout, vdout11aDel: BIT;
  BEGIN
	res<= reset OR clast;
	a1: dca
		PORT MAP (clk, res, caLast, ca);
	b1: dcb
		PORT MAP (clk, caLast, res, cb);
	l1: dcl
		PORT MAP (clk, lCe, synpe1, bsel1, cb, lcomp); -- lcomp=1 if cb>=l
	bufkCeCe<= res OR bufR;
	bufk_Ce: drd1ce  -- buffor Clock Enable register
		PORT MAP (clk, bufkCeCe, res, bufkCe1);
	bufkCe<= bufkCe1 AND cei1;

	one<= '1'; 
	vDoutD: drd1ce -- delay vdout by one clock signal: vdout11
		PORT MAP (clk, one, vdout11, vdout);
	vdout11Ce<= reset OR vdout1R OR vdout1S;
	vdout11In<= vdout1S AND NOT reset;
	vdout11P: drd1ce  -- set if vdout1S; reset if reset or vdout1R
		PORT MAP (clk, vdout11Ce, vdout11In, vdout11a);	
	-- After reset the first vdout11a is not valid
	vdout1aDelay: drd1ce
		PORT MAP (clk, one, vdout11a, vdout11aDel); 
	noFirstVdoutIn<= NOT reset AND ((NOT vdout11a AND vdout11aDel) OR noFirstVdout); 
		-- falling edge of vdout1a - set; reset - reset
	noFirstAfterReset: drd1ce
		PORT MAP (clk, one, noFirstVdoutIn, noFirstVdout); 

	vdout11<= vdout11a AND cei1 AND noFirstVdout;

	snce<= ca0;
	chpe<= chpe1;
	synpe<= synpe1;
	synpe1<= ca0 AND cb0;
	vdout1<= vdout11;
	msmpe<= msmpe1;
	bsel<= bsel1;
	bsel1<= drnzero AND (lcomp OR synpe1);

	-- generated by C program
	clastb<= NOT cb(0) AND NOT cb(1) AND cb(2);  -- cb= 4
	clasta<= ca(0) AND NOT ca(1) AND ca(2);  -- ca= 5
	clast<= clasta AND clastb; -- count= 29
	chpe1b<= NOT cb(0) AND cb(1) AND NOT cb(2);  -- cb= 2
	chpe1a<= NOT ca(0) AND NOT ca(1) AND ca(2);  -- ca= 4
	chpe1<= chpe1a AND chpe1b; -- count= 16
	vdout1Rb<= NOT cb(0) AND NOT cb(1) AND cb(2);  -- cb= 4
	vdout1Ra<= NOT ca(0) AND NOT ca(1) AND ca(2);  -- ca= 4
	vdout1R<= vdout1Ra AND vdout1Rb; -- count= 28
	vdout1Sb<= cb(0) AND cb(1) AND NOT cb(2);  -- cb= 3
	vdout1Sa<= NOT ca(0) AND NOT ca(1) AND NOT ca(2);  -- ca= 0
	vdout1S<= vdout1Sa AND vdout1Sb; -- count= 18
	bufRb<= cb(0) AND NOT cb(1) AND NOT cb(2);  -- cb= 1
	bufRa<= ca(0) AND ca(1) AND NOT ca(2);  -- ca= 3
	bufR<= bufRa AND bufRb; -- count= 9
	cb0<= NOT cb(0) AND NOT cb(1) AND NOT cb(2);  -- cb= 0
	lCe<= caLast AND NOT cb0;
	caLast1<= caLast;
	cceR<= ca(0) AND ca(1) AND NOT ca(2);  -- ca= 3
	cceS<= caLast OR synpe1;
	cceSR<= cceS OR cceR;
	cceP: drd1ce
		PORT MAP(clk, cceSR, cceS, cce);
	cbBeg<= cb0;
	c0first<= caNextLast;
	dringPe<= caLast OR  dringPe2;
	dringPe2<= NOT ca(0) AND ca(1) AND NOT ca(2);  -- ca= 2
	msmpe1<= ca(0) AND NOT ca(1) AND NOT ca(2);  -- ca= 1
	ca0<= NOT ca(0) AND NOT ca(1) AND NOT ca(2);  -- ca= 0
	caNextLast<= NOT ca(0) AND NOT ca(1) AND ca(2);  -- ca= 4
	bufSR<= vdout1S OR bufR;
	bufCeP: drd1ce
		PORT MAP (clk, bufSR, vdout1S, bufCe1);
	bufCe<= bufCe1 AND cei1;

	i1: dci
		PORT MAP (clk, reset, cei1);
	cei<= cei1;
END dcounta;	


------------------------------------------------------------------------------
----------------------------------------------------------------------------------
-- decoder

	USE WORK.const.ALL;
ENTITY dec IS
PORT (clk, reset, din: IN BIT;
	vdout, dout: OUT BIT);
END dec;

ARCHITECTURE deca OF dec IS

	COMPONENT dbuf   -- input output buffer
		PORT (clk, bufCe, bufkCe, err, vdout1, din: IN BIT;
			dout: OUT BIT);
		END COMPONENT; 
	  	FOR ALL: dbuf USE ENTITY WORK.dbuf (dbufa);
	COMPONENT drd1ce -- single register with clock enable
		PORT ( clk, ce, din: IN BIT; dout: OUT BIT);
		END COMPONENT; 
	  	FOR ALL: drd1ce USE ENTITY WORK.drd1ce (drd1cea);
	COMPONENT dmul21 
		PORT ( sel: IN BIT; d0, d1: IN BIT_VECTOR(0 TO m-1); 
			dout: OUT BIT_VECTOR(0 TO m-1));  
		END COMPONENT; 
	  	FOR ALL: dmul21 USE ENTITY WORK.dmul21 (dmul21a);
	COMPONENT drd     -- PIPO register
	  	PORT (clk: IN BIT; din: IN BIT_VECTOR(0 TO m-1); 
			dout: OUT BIT_VECTOR(0 TO m-1));  
		END COMPONENT;
	  	FOR ALL: drd USE ENTITY WORK.drd (drda);
	COMPONENT drdce   -- PIPO register
	  	PORT (clk, ce: IN BIT; din: IN BIT_VECTOR(0 TO m-1); 
			dout: OUT BIT_VECTOR(0 TO m-1));  
		END COMPONENT;
	  	FOR ALL: drdce USE ENTITY WORK.drdce (drdcea);
	COMPONENT drdcer   -- PIPO register
	  	PORT (clk, ce, reset: IN BIT; din: IN BIT_VECTOR(0 TO m-1); 
			dout: OUT BIT_VECTOR(0 TO m-1));  
		END COMPONENT;
	  	FOR ALL: drdcer USE ENTITY WORK.drdcer (drdcera);
	COMPONENT drdcesone   -- m registers with CE and if set='1' dout<=din0&"00.." 
		PORT ( clk, ce, set, dinone: IN BIT; din: IN BIT_VECTOR(0 TO m-1); 
			dout: OUT BIT_VECTOR(0 TO m-1));
		END COMPONENT;
	  	FOR ALL: drdcesone USE ENTITY WORK.drdcesone (drdcesonea);
	COMPONENT dpm    -- Parallel dual basis multiplier
		PORT (din1, din2: IN BIT_VECTOR(0 TO m-1); 
			dout: OUT BIT_VECTOR(0 TO m-1));  
		END COMPONENT;
	  	FOR ALL: dpm USE ENTITY WORK.dpm (dpma);
	COMPONENT dxorm            -- dout<= din1 xor din0; opt.1
		PORT (din0, din1: IN BIT_VECTOR(0 TO m-1);
			dout: OUT BIT_VECTOR(0 TO m-1));
		END COMPONENT;
	  	FOR ALL: dxorm USE ENTITY WORK.dxorm (dxorma);


		-- OPTION 3
	COMPONENT dshr   -- shift register with reset and serial XOR, opt.3
		PORT (clk, ce, reset, din: IN BIT;
			dout: OUT BIT_VECTOR(0 TO m-1)); 
		END COMPONENT;
	  	FOR ALL: dshr USE ENTITY WORK.dshr (dshra);
	COMPONENT dshpe   -- shift register with parallel in and serial XOR, opt.3
		PORT (clk, ce, pe: IN BIT; din: IN BIT_VECTOR(0 TO m-1);
			dout: OUT BIT_VECTOR(0 TO m-1)); 
		END COMPONENT;
	  	FOR ALL: dshpe USE ENTITY WORK.dshpe (dshpea);
	COMPONENT dsdbm -- serial dual basis maltiplier wirhout ring, opt.3
		PORT (dbin, sbin: IN BIT_VECTOR(0 TO m-1); dout: OUT BIT);
		END COMPONENT;
	  	FOR ALL: dsdbm USE ENTITY WORK.dsdbm (dsdbma);
	COMPONENT  dsdbmRing  -- serial dual basis maltiplier ring, opt.3
		PORT (clk, pe: IN BIT;   -- pe- parellel enable
			din: IN BIT_VECTOR(0 TO m-1);
			dout: OUT BIT_VECTOR(0 TO m-1)); 
		END COMPONENT;
	  	FOR ALL: dsdbmRing USE ENTITY WORK.dsdbmRing (dsdbmRinga);
	COMPONENT dssbm   -- serial standard basis multiplier ring, opt3
		PORT (clk, ce, pe: IN BIT; din: IN BIT_VECTOR(0 TO m-1); 
			dout: OUT BIT_VECTOR(0 TO m-1)); 
		END COMPONENT;
	  	FOR ALL: dssbm USE ENTITY WORK.dssbm (dssbma);
	COMPONENT dmli  -- multiply by alpha^i (1 + x^i + x^m; for m!=8), opt.3
		PORT (din: IN BIT_VECTOR(0 TO m-1);
 			dout: OUT BIT_VECTOR(0 TO m-1));
		END COMPONENT;
	  	FOR ALL: dmli USE ENTITY WORK.dmli (dmlia);
	COMPONENT dinv  -- inverter
		PORT (clk, cbBeg, bsel, caLast, cce, drnzero, snce, synpe: IN BIT;  -- pe- parallel enable - if dr!=0; 
			din: IN BIT_VECTOR(0 TO m-1);
			dout: OUT BIT_VECTOR(0 TO m-1));
		END COMPONENT;
	  	FOR ALL: dinv USE ENTITY WORK.dinv (dinva);
	COMPONENT dandm  -- dout<= din AND en
		PORT (en: IN BIT; din: IN BIT_VECTOR(0 TO m-1);
		dout: OUT BIT_VECTOR(0 TO m-1));
		END COMPONENT;
	  	FOR ALL: dandm USE ENTITY WORK.dandm (dandma);
	
		-- common
	COMPONENT dxort                       -- (t-1) * XOR
		PORT (din0, din1, din2, din3: IN BIT; dout: OUT BIT);
		END COMPONENT;
	  	FOR ALL: dxort USE ENTITY WORK.dxort (dxorta);
	COMPONENT dcheq   -- check if Chien search circuit is zero
		PORT (din1, din2, din3: IN BIT_VECTOR(0 TO m-1); 
			dout: OUT BIT); -- dout=1 if an error occur
		END COMPONENT;
	  	FOR ALL: dcheq USE ENTITY WORK.dcheq (dcheqa);

	-- SYNDROMS & CHIEN SEARCH
	COMPONENT dsyn1
		PORT (clk, ce, pe, din: IN BIT;
		dout1, dout2, dout4: OUT BIT_VECTOR(0 TO m-1));
		END COMPONENT;
 		FOR ALL: dsyn1 USE ENTITY WORK.dsyn1 (dsyn1a);
	COMPONENT dsyn3
		PORT (clk, ce, pe, din: IN BIT;
		dout3: OUT BIT_VECTOR(0 TO m-1));
		END COMPONENT;
 		FOR ALL: dsyn3 USE ENTITY WORK.dsyn3 (dsyn3a);
	COMPONENT dsyn5
		PORT (clk, ce, pe, din: IN BIT;
		dout5: OUT BIT_VECTOR(0 TO m-1));
		END COMPONENT;
 		FOR ALL: dsyn5 USE ENTITY WORK.dsyn5 (dsyn5a);
	COMPONENT dch1
		PORT (clk, ce, pe: IN BIT; din: IN BIT_VECTOR(0 TO m-1);
			dout: OUT BIT_VECTOR(0 TO m-1));
		END COMPONENT;
		FOR ALL: dch1 USE ENTITY WORK.dch1 (dch1a);
	COMPONENT dch2
		PORT (clk, ce, pe: IN BIT; din: IN BIT_VECTOR(0 TO m-1);
			dout: OUT BIT_VECTOR(0 TO m-1));
		END COMPONENT;
		FOR ALL: dch2 USE ENTITY WORK.dch2 (dch2a);
	COMPONENT dch3
		PORT (clk, ce, pe: IN BIT; din: IN BIT_VECTOR(0 TO m-1);
			dout: OUT BIT_VECTOR(0 TO m-1));
		END COMPONENT;
		FOR ALL: dch3 USE ENTITY WORK.dch3 (dch3a);

	-- common signals generated by C program
	SIGNAL syn1, syn2, syn3, syn4, syn5: BIT_VECTOR(0 TO m-1);
	SIGNAL sn0out, sn1out, sn2out, sn3out, sn4out: BIT_VECTOR(0 TO m-1);
	SIGNAL sn0in, sn1in, sn2in, sn3in: BIT_VECTOR(0 TO m-1);
	SIGNAL c1out, c2out, c3out: BIT_VECTOR(0 TO m-1);
	SIGNAL b3out: BIT_VECTOR(0 TO m-1);
	SIGNAL ch1out, ch2out, ch3out: BIT_VECTOR(0 TO m-1);

	-- for different option by C program
	SIGNAL cei: BIT; -- interleve CE
	SIGNAL sn0en, sn1en, sn2en, sn3en: BIT_VECTOR(0 TO m-1);
	COMPONENT dcount --counter
		PORT (clk, reset, drnzero: IN BIT;
		bsel, bufCe, bufkCe, chpe, msmpe, snce, synpe, vdout, vdout1, c0first, cce, caLast1, cbBeg, dringPe, cei: OUT BIT);
		END COMPONENT;
		FOR ALL: dcount USE ENTITY WORK.dcount (dcounta);

	--  option 3 VHDL template
	SIGNAL  chpe, msmPe, msmCe, snce, synpe, vdout1, caLast: BIT; 
	SIGNAL  cce, cbBeg: BIT; 
		-- from counter - control signals
	SIGNAL err, bsel, bufCe, bufkCe: BIT;
	SIGNAL b3set, b3sIn, b2out, b2ce, b3ce, xbsel: BIT;  
		-- bsel=1 - Br+1<- Br*x^2 
	SIGNAL drnzero, dringPe, ccCe, qdr_or, qdr_orCe: BIT;
	SIGNAL one, c0first: BIT;
	SIGNAL c1in, cs, dr, dra, dr_or: BIT_VECTOR(0 TO m-1);
	SIGNAL drpd, qd, dli, dmIn, dm: BIT_VECTOR(0 TO m-1);
	SIGNAL cin: BIT_VECTOR(2 TO t);
  BEGIN
	b2: drd1ce
		PORT MAP (clk, b2ce, bsel, b2out);
	b3ce<= caLast AND NOT cbBeg;
	b2ce<= synpe OR b3ce;

	dr_or(0)<= dra(0);  -- dr_or<= dra(0) OR dra(1) ... OR dra(m-1)
	gen_dr:
	FOR i IN 1 TO m-1 GENERATE
		dr_or(i)<= dr_or(i-1) OR dra(i);
	END GENERATE;
	qdr_orCe<= synpe OR caLast;
	qdrOr: drd1ce
		PORT MAP (clk, qdr_orCe, dr_or(m-1), qdr_or);
	drnzero<= (synpe AND dr_or(m-1)) OR (NOT synpe AND qdr_or);
	msmCe<= NOT caLast;
	msm: dssbm
		PORT MAP (clk, msmce, msmpe, cs, dr);	

	xdr: dmul21
		PORT MAP (synpe, dr, syn1, dra);
	
	inv: dinv
		PORT MAP (clk, cbBeg, bsel, caLast, cce, drnzero, snce, synpe, dra, drpd);
		-- c0first - count next to the last
	qdd: drdce
		PORT MAP (clk, caLast, drpd, qd);

	b3set<= synpe OR (b3ce AND NOT bsel);
	b3sIn<= synpe AND NOT drnzero;
	b3:  drdcesone
		PORT MAP (clk, b3ce, b3set, b3sIn, c1out, b3out);
	xbsel<= bsel OR cbBeg;  -- cbBeg to reset b:
	ccCe<= (msmPe AND cbBeg) OR caLast;
	c1in<= syn1(m-1) & syn1(0 TO m-2);
	c1: dshpe
		PORT MAP (clk, cce, synpe, c1in, c1out);
	cin(2)<= dm(0) AND b2out AND NOT cbBeg;
	-- for m!= 8
	mli: dmli  -- multiply by second nonzero coeffiecient no
		PORT MAP (drpd, dli);
	xdm: dmul21
		PORT MAP (caLast, qd, dli, dmIn);
	dring: dsdbmRing
		PORT MAP (clk, dringPe, dmIn, dm);	

	--------- for option 3 C program 
	sn0e: dandm
		PORT MAP (c0first, sn0out, sn0en);
	sn1e: dandm
		PORT MAP (c1out(0), sn1out, sn1en);
	sn2e: dandm
		PORT MAP (c2out(0), sn2out, sn2en);
	sn3e: dandm
		PORT MAP (c3out(0), sn3out, sn3en);
	ms0: dxort
		PORT MAP (sn0en(0), sn1en(0), sn2en(0), sn3en(0), cs(0));
	ms1: dxort
		PORT MAP (sn0en(1), sn1en(1), sn2en(1), sn3en(1), cs(1));
	ms2: dxort
		PORT MAP (sn0en(2), sn1en(2), sn2en(2), sn3en(2), cs(2));
	ms3: dxort
		PORT MAP (sn0en(3), sn1en(3), sn2en(3), sn3en(3), cs(3));
	c2: dshr
		PORT MAP (clk, cce, cbBeg, cin(2), c2out);
	c3: dshr
		PORT MAP (clk, cce, cbBeg, cin(3), c3out);
	mb3: dsdbm
		PORT MAP (b3out, dm, cin(3));
	count: dcount
		PORT MAP (clk, reset, drnzero, bsel, bufCe, bufkCe, chpe, msmPe, snce, synpe, vdout, vdout1, c0first, cce, caLast, cbBeg, dringPe, cei);


	--------- common C program
	s1: dsyn1
		PORT MAP (clk, cei, synpe, din,  syn1, syn2, syn4);
	s3: dsyn3
		PORT MAP (clk, cei, synpe, din,  syn3);
	s5: dsyn5
		PORT MAP (clk, cei, synpe, din,  syn5);
	x0: dmul21
		PORT MAP (synpe, sn3out, syn3, sn0in);
	x1: dmul21
		PORT MAP (synpe, sn4out, syn2, sn1in);
	x2: dmul21
		PORT MAP (synpe, sn0out, syn1, sn2in);
	x3: dmul21
		PORT MAP (synpe, sn1out, syn5, sn3in);
	sn0: drdce
		PORT MAP (clk, snce, sn0in, sn0out);
	sn1: drdce
		PORT MAP (clk, snce, sn1in, sn1out);
	sn2: drdce
		PORT MAP (clk, snce, sn2in, sn2out);
	sn3: drdce
		PORT MAP (clk, snce, sn3in, sn3out);
	sn4: drdce
		PORT MAP (clk, synpe, syn4, sn4out);
	ch1: dch1
		PORT MAP (clk, cei, chpe, c1out, ch1out);
	ch2: dch2
		PORT MAP (clk, cei, chpe, c2out, ch2out);
	ch3: dch3
		PORT MAP (clk, cei, chpe, c3out, ch3out);
	cheg: dcheq
		PORT MAP (ch1out, ch2out, ch3out,  err);

	--- common for all option VHDL template 
	one<= '1';
	buf: dbuf
		PORT MAP (clk, bufCe, bufkCe, err, vdout1, din, dout);
END deca;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -