导航:首页 > 编程语言 > 用VerilogHDL编写60进制程序

用VerilogHDL编写60进制程序

发布时间:2021-02-27 20:07:26

Ⅰ 用Verilog语言怎么写一个60进制的计数器然后显示在数码管上

mole xue3(iSW,oHEX3,oHEX2,oHEX1,oHEX0);
input [3:0] iSW;
output oHEX3,oHEX2,oHEX1,oHEX0;
//下面点亮四个七段数码管
bcd7seg digit0(iSW[3:0],oHEX0);
bcd7seg digit1(iSW[3:0],oHEX1);
bcd7seg digit2(iSW[3:0],oHEX2);
bcd7seg digit3(iSW[3:0],oHEX3);
endmole
//下面是子模块。欢~~迎~~加fpga~qun~~37378637 /////////////
mole bcd7seg(B,H);
input [3:0] B;
output reg H;
always @(B) begin
case (B) //选择输出数据,这里采用的是共阳极接法,要是共阴极各数按位全部取反即可。从最低位开始分别代表了七段中的abcdefg第8位是D.P段
4'h0: H = 8'hc0; //显示0
4'h1: H = 8'hf9; //显示1
4'h2: H = 8'ha4; //显示2
4'h3: H = 8'hb0; //显示3
4'h4: H = 8'h99; //显示4
4'h5: H = 8'h92; //显示5
4'h6: H = 8'h82; //显示6
4'h7: H = 8'hf8; //显示7
4'h8: H = 8'h80; //显示8
4'h9: H = 8'h90; //显示9
4'ha: H = 8'h88; //显示a
4'hb: H = 8'h83; //显示b
4'hc: H = 8'hc6; //显示c
4'hd: H = 8'ha1; //显示d
4'he: H = 8'h86; //显示e
4'hf: H = 8'h8e; //显示f
default: H =8'hff; //全灭
endcase
end
endmole

Ⅱ 用VHDL语言编写程序:可逆的60进制计数器

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT60 IS
PORT(CH,CLK,EN:IN STD_LOGIC;
DOUT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);
COUT:OUT STD_LOGIC);
END ENTITY CNT60;
ARCHITECTURE ONE OF CNT60 IS
BEGIN
PROCESS(CLK,EN,CH)
VARIABLE dd: STD_LOGIC_VECTOR(5 DOWNTO 0);
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF EN='1' THEN
IF CH='1' THEN
IF dd<60 THEN dd:=dd+1;
ELSE dd:="000000";
END IF;
IF dd=60 THEN COUT<='1';
ELSE COUT<='0';
END IF;
ELSE IF dd>0 THEN dd:=dd-1;
ELSE dd:="111100";
END IF;
IF dd=0 THEN COUT<='1';
ELSE COUT<='0';
END IF;
END IF;
END IF;
END IF;
DOUT<=dd;
END PROCESS;
END ARCHITECTURE ONE;
--EN为使能信号,高电平有效,CH可以选择,为1时进行加,为0时进行减。

Ⅲ 用VHDL语言编写BCD码60进制加法计数器

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT60 IS
PORT(
CLK,EN,CR :IN STD_LOGIC;
LD :IN STD_LOGIC;
D :IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CO : OUT STD_LOGIC;
Q :OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END CNT60;

ARCHITECTURE a OF CNT60 IS
SIGNAL QN :STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
CO<='1' WHEN(QN=X"59" AND EN='1')
ELSE'0';
PROCESS(CLK,CR)
BEGIN
IF (CR='0')THEN
QN<=X"00";
ELSE
IF (CLK'EVENT AND CLK='1') THEN
IF (LD='0') THEN
QN<=D;
ELSIF(EN='1') THEN
IF QN(3 DOWNTO 0)=9 THEN
QN(3 DOWNTO 0)<="0000";
IF QN(7 DOWNTO 4)=5 THEN
QN(7 DOWNTO 4)<="0000";
ELSE
QN(7 DOWNTO 4)<= QN(7 DOWNTO 4)+1;
END IF;
ELSE
QN(3 DOWNTO 0)<= QN(3 DOWNTO 0)+1;
END IF ;
END IF;
END IF ;
END IF;
END PROCESS;
Q<=QN;
end a;

Ⅳ 用vhdl程序设计一个60进制(带进位输出)和12进制加法计数器(带进位输出)

请问要的是加法器还是计数器?60进制?还是60位宽?

Ⅳ 用verilog 写一个 将十六进制数转换十进制数的程序 和将 十进制数转换成十六进制的程序

十六进制-->十进制:其实就是十六进制-->BCD,可参考http://wenku..com/view/313907020740be1e650e9a3d.html
我写的代码
mole Bin2BCD16(A, B);
input [15:0] A;
output [19:0] B;

wire [3:0] c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13;
wire [3:0] c14, c15, c16, c17, c18, c19, c20, c21, c22, c23;
wire [3:0] c24, c25, c26, c27, c28, c29, c30;
wire [3:0] c31, c32, c33, c34;

wire [3:0] d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13;
wire [3:0] d14, d15, d16, d17, d18, d19, d20, d21, d22, d23;
wire [3:0] d24, d25, d26, d27, d28, d29, d30;
wire [3:0] d31, d32, d33, d34;

assign d1 = {1'b0, A[15:13]};
assign d2 = {c1[2:0], A[12]};
assign d3 = {c2[2:0], A[11]};
assign d4 = {c3[2:0], A[10]};
assign d5 = {c4[2:0], A[9]};
assign d6 = {c5[2:0], A[8]};
assign d7 = {c6[2:0], A[7]};
assign d8 = {c7[2:0], A[6]};
assign d9 = {c8[2:0], A[5]};
assign d10 = {c9[2:0], A[4]};
assign d11 = {c10[2:0], A[3]};
assign d12 = {c11[2:0], A[2]};
assign d13 = {c12[2:0], A[1]};

assign d14 = {1'b0, c1[3], c2[3], c3[3]};
assign d15 = {c14[2:0], c4[3]};
assign d16 = {c15[2:0], c5[3]};
assign d17 = {c16[2:0], c6[3]};
assign d18 = {c17[2:0], c7[3]};
assign d19 = {c18[2:0], c8[3]};
assign d20 = {c19[2:0], c9[3]};
assign d21 = {c20[2:0], c10[3]};
assign d22 = {c21[2:0], c11[3]};
assign d23 = {c22[2:0], c12[3]};

assign d24 = {1'b0, c14[3], c15[3], c16[3]};
assign d25 = {c24[2:0], c17[3]};
assign d26 = {c25[2:0], c18[3]};
assign d27 = {c26[2:0], c19[3]};
assign d28 = {c27[2:0], c20[3]};
assign d29 = {c28[2:0], c21[3]};
assign d30 = {c29[2:0], c22[3]};

assign d31 = {1'b0, c24[3], c25[3], c26[3]};
assign d32 = {c31[2:0], c27[3]};
assign d33 = {c32[2:0], c28[3]};
assign d34 = {c33[2:0], c29[3]};

Bin2BCD_Add3 m1(d1, c1);
Bin2BCD_Add3 m2(d2, c2);
Bin2BCD_Add3 m3(d3, c3);
Bin2BCD_Add3 m4(d4, c4);
Bin2BCD_Add3 m5(d5, c5);
Bin2BCD_Add3 m6(d6, c6);
Bin2BCD_Add3 m7(d7, c7);
Bin2BCD_Add3 m8(d8, c8);
Bin2BCD_Add3 m9(d9, c9);
Bin2BCD_Add3 m10(d10, c10);
Bin2BCD_Add3 m11(d11, c11);
Bin2BCD_Add3 m12(d12, c12);
Bin2BCD_Add3 m13(d13, c13);

Bin2BCD_Add3 m14(d14, c14);
Bin2BCD_Add3 m15(d15, c15);
Bin2BCD_Add3 m16(d16, c16);
Bin2BCD_Add3 m17(d17, c17);
Bin2BCD_Add3 m18(d18, c18);
Bin2BCD_Add3 m19(d19, c19);
Bin2BCD_Add3 m20(d20, c20);
Bin2BCD_Add3 m21(d21, c21);
Bin2BCD_Add3 m22(d22, c22);
Bin2BCD_Add3 m23(d23, c23);

Bin2BCD_Add3 m24(d24, c24);
Bin2BCD_Add3 m25(d25, c25);
Bin2BCD_Add3 m26(d26, c26);
Bin2BCD_Add3 m27(d27, c27);
Bin2BCD_Add3 m28(d28, c28);
Bin2BCD_Add3 m29(d29, c29);
Bin2BCD_Add3 m30(d30, c30);

Bin2BCD_Add3 m31(d31, c31);
Bin2BCD_Add3 m32(d32, c32);
Bin2BCD_Add3 m33(d33, c33);
Bin2BCD_Add3 m34(d34, c34);

assign B = {c31[3], c32[3], c33[3], c34[3:0], c30[3:0], c23[3:0], c13[3:0], A[0]};

endmole
////////////////////////////////////////////////////////////////////////////////

mole Bin2BCD_Add3(in4, out4);
input [3:0] in4;
output reg [3:0] out4;

always @(in4)
(in4)
4'b0000: out4 <= 4'b0000;
4'b0001: out4 <= 4'b0001;
4'b0010: out4 <= 4'b0010;
4'b0011: out4 <= 4'b0011;
4'b0100: out4 <= 4'b0100;
4'b0101: out4 <= 4'b1000;
4'b0110: out4 <= 4'b1001;
4'b0111: out4 <= 4'b1010;
4'b1000: out4 <= 4'b1011;
4'b1001: out4 <= 4'b1100;
default: out4 <= 4'b0000;
endcase
endmole
////////////////////////////////////////////////////////////////////////
十进制---->十六进制:
我一般都是直接使用乘法:B[15:0]=A[23:16]*100+A[15:8]*10+A[7:0],因为现在的编译器(如Quartus II)都支持
或者也可以使用移位运算实现,例如:
乘以100可以写为:
a<<6+a<<5+a<<2
乘以10可以写为:
a<<3+a<<1

Ⅵ 如何用VHDL语言编写60进制减法计数器

你最好把各端口的用处说明一下。

主要的问题是:你的F定义为 STD_LOGIC_VECTOR(5 DOWNTO 0)
可在使用中只给出了4位的数据。

好好再考虑考虑

Ⅶ 用verilog hdl 语言编写数字钟源程序,译码器,60,24进制,选择器,分频器代码都写好怎么把它们弄到一起

做一个top mole ,在此mole里例化上述几个子模块。但是你需要确定top的输入输出信号,非端口信号但是子模块之间相互连接的线定义为wire型。

Ⅷ 急求用hdl语言编写六十进制计数器

mole counter(clk,seg7_1,seg7_0);
input clk;
output[3:0] seg7_1,seg7_0;
output cin;//进位信号
reg[3:0] seg7_1,seg7_0;
reg[3:0] data1,data0;

always@(posedge clk)
begin
if(data0<4'b1001)
begin
data0<=data0+4'b1;
cin<=1'b0;
end
else
begin
data0<=4'b0;
if(data1<4'b0101)
data1<=data1+4'b1;
else
begin
data1<=4'b0;
cin<=1'b1;
end
end
end
//以下为显示程序,数码管假设为共阴极;
always@(data1)
begin
case(data1)
4'b0000:seg7_1=7'b1111110;
4'b0001:seg7_1=7'b0110000;
4'b0010:seg7_1=7'b1101101;
4'b0011:seg7_1=7'b1111001;
4'b0100:seg7_1=7'b0110011;
4'b0101:seg7_1=7'b1011011;
default:_1=7'b0000000;
endcase
end
always@(data0)
begin
case(data0)
4'b0000:seg7_0=7'b1111110;
4'b0001:seg7_0=7'b0110000;
4'b0010:seg7_0=7'b1101101;
4'b0011:seg7_0=7'b1111001;
4'b0100:seg7_0=7'b0110011;
4'b0101:seg7_0=7'b1011011;
4'b0110:seg7_0=7'b1011111;
4'b0111:seg7_0=7'b1110000;
4'b1000:seg7_0=7'b1111111;
4'b1001:seg7_0=7'b1111011;
default:seg7_0=7'b0000000;
endcase
end
endmole

阅读全文

与用VerilogHDL编写60进制程序相关的资料

热点内容
宝马frm数据修复是什么用 浏览:57
文件放进u盘然后打不开 浏览:861
哪些城市小学开编程课 浏览:550
被窝电影0855影院 浏览:793
大话西游2粤语版高清 浏览:146
索八原车导航升级 浏览:35
iphone5接听需要密码吗 浏览:673
3开头的10位qq号 浏览:397
重生之刘涛怀孕 浏览:984
大数据引领慢病 浏览:572
盒马生鲜app怎么买 浏览:511
苹果tumblr教程 浏览:48
sm爱好者都用哪些APP 浏览:311
不可能的世界txt 浏览:48
苹果6s手机摔掉漆 浏览:449
男主囚禁女主灭了她的国家 浏览:841
男人看的电影网站 浏览:390
车展推广app有哪些 浏览:787
云学app哪个好 浏览:498
因为什么对编程感兴趣 浏览:161

友情链接