试用Veriloghdl设计一个七段数码管的显示译码器,要求可以同时兼容共阴共阳数码管

作者&投稿:缪璧 (若有异议请与网页底部的电邮联系)
用VHDL语言设计一个七段显示译码器电路,要求输出信号为高电平有效, 能驱动共阴极数码管。~

下面是74LS49的VHDL描述,74LS49就是一个驱动共阴极数码管的译码器:
LIBRARY IEEE;
USE IEEE.Std_logic_1164.ALL;
ENTITY ls49 IS
PORT(bl_n:IN Std_logic;
bi:IN Std_logic_vector(3 DOWNTO 0);
a,b,c,d,e,f,g:OUT Std_logic);
END ls49;
ARCHITECTURE behave_49 OF ls49 IS
SIGNAL s:Std_logic_vector(6 DOWNTO 0);
BEGIN
PROCESS(bi,bl_n)
BEGIN
IF bl_n = ′0′ THEN
s ′0′);
ELSE
CASE bi IS
WHEN ″0000″ => s <= B″011_1111″;
WHEN ″0001″ => s <= B″000_0110″;
WHEN ″0010″ => s <= B″101_1011″;
WHEN ″0011″ => s <= B″100_1111″;
WHEN ″0100″ => s <= B″110_0110″;
WHEN ″0101″ => s <= B″110_1101″;
WHEN ″0110″ => s <= B″111_1101″;
WHEN ″0111″ => s <= B″010_0111″;
WHEN ″1000″ => s <= B″111_1111″;
WHEN ″1001″ => s <= B″110_1111″;
WHEN ″1010″ => s <= B″101_1000″;
WHEN ″1011″ => s <= B″100_1100″;
WHEN ″1100″ => s <= B″110_0010″;
WHEN ″1101″ => s <= B″111_1001″;
WHEN ″1110″ => s <= B″111_1000″;
WHEN ″1111″ => s <= B″000_0000″; -- 熄灭
WHENOTHERS=> s ′0′); -- 熄灭
END CASE;
END IF;
END PROCESS;
a <= s(0);
b <= s(1);
c <= s(2);
d <= s(3);
e <= s(4);
f <= s(5);
g <= s(6);
END behave_49;

74LS49是一个7段译码器,其VHDL描述如下:
LIBRARYIEEE;
USE IEEE.Std_logic_1164.ALL;
ENTITYls49 IS
PORT(bl: IN Std_logic;
bi: IN Std_logic_vector(3 DOWNTO 0);
a,b,c,d,e,f,g: OUT Std_logic);
ENDls49;
ARCHITECTURE behavl_49 OF ls49 IS
SIGNAL s: Std_logic_vector(6 DOWNTO 0);
BEGIN
PROCESS (bi,bl)
BEGIN
IF (bl/='1') AND (bl/='H') THEN
s '0');
ELSE
CASE bi IS
WHEN "0000"=>s<="0111111";
WHEN "0001"=>s<="0000110";
WHEN "0010"=>s<="1011011";
WHEN "0011"=>s<="1001111";
WHEN "0100"=>s<="1100110";
WHEN "0101"=>s<="1101101";
WHEN "0110"=>s<="1111101";
WHEN "0111"=>s<="0100111";
WHEN "1000"=>s<="1111111";
WHEN "1001"=>s<="1101111";
WHEN "1010"=>s<="1110111";
WHEN "1011"=>s<="1111100";
WHEN "1100"=>s<="0111001";
WHEN "1101"=>s<="1011110";
WHEN "1110"=>s<="1111001";
WHEN "1111"=>s<="1110001";
WHEN OTHERS=>s<="0000000";
END CASE;
END IF;
END PROCESS;
a <= s(0);
b <= s(1);
c <= s(2);
d <= s(3);
e <= s(4);
f <= s(5);
g <= s(6);
END behavl49;

module led8_display(clk,rst,comsel,en,play);
input clk;
input rst;
input comsel;
output[7:0] en;
output[7:0] play;
reg[30:0] count;
reg[7:0] en;
reg[7:0] play;
always@(posedge clk or negedge rst)
begin
if(!rst)
begin
if(comsel)//共阳译码
begin
count<=0;
en<=1;
play<=8'b00111111;
end
else
begin
count<=0;
en<=0;
play<=8'b11000000;
end
end
else
begin
count<=count+1;
case(count[30:28])
3'b000:
begin
if(consel)
begin
en<=8'b00000001;
play<=8'b00111111;
end

else

begin
en<=8'b11111110;
play<=8'b11000000;
end
end
3'b001:
begin
if(comsel)
begin
en<=8'b00000010;
play<=8'b00000110;
end
else
begin
en<=8'b11111101;
play<=8'b11111001;
end
end
3'b010:
begin

if(consel)

begin
en<=8'b00000100;
play<=8'b01011011;
end
else
begin
en<=8'b11111011;
play<=8'b10100100;
end
end
4'b011:
begin
if(consel)
begin
en<=8'b00001000;
play<=8'b01001111;
end
else
begin
en<=8'b11110111;
play<=8'b10110000;
end
end
endcase
end
end
endmodule

这个是我刚刚写的4位7段数码管流水灯显示1---4的程序,希望对你有用,按题目要求,你只需把代码中时钟分频器寄存器变量count删去、output reg[7:0] en;改成“output reg en,4位动态case显示改成单数码管静态显示就行了……


用verilog语言编写电子密码锁程序,可实现数据输入 数码清除 密码更改...
include <stdio.h> include <conio.h> \/*conio库,调用无回显getch()就是输入后不显示*\/ void main (){ int i=1;int j;char code[10];for(;i<=3;i++){ printf("你还有%d次机会,请输入密码:\\n",4-i);for(j=0;j<10;j++){ code[j]=getch();if(code[j]=='\\b') ...

用Verilog语言设计一个3-8译码器~(要求分别用case语句和if_else语句...
else result = 8'h04;else if(code[0])result = 8'h02;else result = 8'h01;else end endmodule 工作原理 使用Verilog描述硬件的基本设计单元是模块(module)。构建复杂的电子电路,主要是通过模块的相互连接调用来实现的。模块被包含在关键字module、endmodule之内。实际的电路元件。Verilog中的模块...

用Verilog HDL编程设计8位桶形移位器。
这个可以简单实现d=“ABCDEFGH” c=101,out=“DEFGHABC”

用verilog 设计一个带使能端的、具有同步置位控制的、4位加法计数器...
module count(input clk,input rst,input reset,input flag_add,input flag_sub,output reg [7:0] sum );always@(posedge clk or negedge rst)begin if(!rst)sum<=8'h00;else if(!reset)sum <= 8'h69; \/\/同步置位 数值自己定;else if(flag_add)sum <= sum+1;else if(flag_su...

求一份用verilog设计电子日历的。最好详细点。感谢了!!!急
DS1302 与RAM 相关的寄存器分为两类:一类是单个RAM 单元,共31 个,每个单元组态为一个8 位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM 寄存器,此方式下可一次性读写所有的RAM 的31 个字节,命令控制字为FEH(写)、FFH(读)。4.2.2 DS1302 ...

求解:verilog语言中$fopen $fdisplayh $fclose三个函数的用法_百度知 ...
1 文件可以用系统任务$fopen打开。用法有两种 fopen("<文件名>");<文件句柄>=$fopen("<文件名>");2$fdisplay是将数据写入制定的文件中。例如 H1=$fopen("文件名");%取一个文件的句柄 fdisplay("数据");%将数据写入文件 3同上当你想关闭文件的时候就使用fclose fclose(<文件句柄>);%这里的...

用verilog编写程序表示8位数码扫描显示电路
4'h2:sm_seg=8'ha4;\/\/"2"4'h3:sm_seg=8'hb0;\/\/"3"4'h4:sm_seg=8'h99;\/\/"4"4'h5:sm_seg=8'h92;\/\/"5"4'h6:sm_seg=8'h82;\/\/"6"4'h7:sm_seg=8'hf8;\/\/"7"4'h8:sm_seg=8'h80;\/\/"8"4'h9:sm_seg=8'h90;\/\/"9"default:sm_seg=8'hc0;\/\/"0"endcase en...

用verilog程序设计一个具有异步清零功能的24进制计数器
module counter_24 ( input clk, input rst, input cnt_in ,output reg cnt_out );reg [4:0] cnt;always @ (posedge clk or posedge rst_n) begin if (rst) cnt <= 5'b0;else if (~cnt_in) cnt <= cnt;else if (cnt == 5'b10110) cnt <= 5'b0;else cnt <= cnt + 1'...

各位大哥大姐,我现在有个verilog hdl方面的难题,希望大家能够帮助我。不...
你看图可以知道很类似SPI嘛,像datain数据传输是时钟上升沿放数据,下降沿读数据,像AD模块,发出去命令后,模块会把采集的数据发回来,那么通过信号线datain先发出去可能16位的数据,每一位是在上升沿写入,模块会自动在下降沿提取这不用咱操心,命令发送过程中,dataout一直是高电平或者根据硬件不同...

用Verilog HDL写的 六进制和十进制计数器 以及30万分频器的程序,大家...
十进制计数器同上 3万分频器,这种结果占空比为1\/30000,如果想要占空比为50%,可以计数到14999(3A97),然后清0,把newclk取反,这样高低电平各15000;initial begin newclk <= 1'b0;q <= 16'h0;end always@(posedge clk)begin if(q == 16'h3a97)begin newclk <= ~newclk;q <= 16'h0...

宿迁市15938717846: 怎么用Verilog HDL 编写一个七段LED译码器 -
道爽糖尿: module decode4_7(a,b,c,d,e,f,g,D3,D2,D1,D0); output a,b,c,d,e,f,g; input D3,D2,D1,D0; reg a,b,c,d,e,f,g; always @(D3 or D2 or D1 or D0) begin case({D3,D2,D1,D0}) 4'd0:{a,b,c,d,e,f,g}=7'b1111110; 4'd1:{a,b,c,d,e,f,g}=7'b0110000; 4'd2:{...

宿迁市15938717846: 用Verilog HDL实现计数器:7进制,递增计数,异步清零,同步计数使能和可预置数. -
道爽糖尿: 【1】else if(Q1<9) Q1<=Q1+1; ---->else if(Q1<7) Q1<=Q1+1;...... 【2】if(Q1==4'h9) COUT=1'b1; ---->if(Q1==4'h7) COUT=1'b1;...... 即可! 另:当然,原文件是4-bit的,然而7只要3-bit即可,你可以砍掉一位.4'h,4'b改成3'h,3'b之类的! dout, q1统统改成3-bit定义与声明.Bye !

宿迁市15938717846: 在eda中 用verilog hdl case语句写7分频 -
道爽糖尿: 写个简单的吧,没复位,占空比不是50%的.要50%占空比的,再采个下降沿就行了 module fre_div7(output reg clk_o, input clk_i); reg [2:0] count; always@(posedge clk_i)begin if(count=3'b110) count elsecount end always@(count) begin case(count[2]) 1'b0:clk_o=1'b0; 1'b1:clk_o=1'b1; default:clk_o=0; endcase end endmodule

宿迁市15938717846: 利用verilogHDL设计节日七个彩灯逐个亮,并循环闪烁...最好利用阻塞与非阻塞,麻烦你了 -
道爽糖尿: 阻塞赋值 module led_top(resetb, clk, led) input resetb; input clk; output [6:0] led; reg [6:0] led, led_wire; always @(negedge resetb, posedge clk) if (~resetb) led else led always @(led) led_wire = {led[5:0], led[6]}; endmodule 推荐使用非阻塞赋值 ...

宿迁市15938717846: 用Verilog HDL语言设计一个模值可变的计数器?怎样做? -
道爽糖尿: 其实很简单的,这个和可以设置初始值的计数器实现方法是一样的.如果你能看懂下面这段代码,相信你肯定能写出一个模值可变的计数器了.module counter7(clk,rst,load,data,cout); input clk,rst,load; input [2:0] data; output reg [2:0] cout; always...

宿迁市15938717846: 使用Verilog HDL循环语句设计一个求补码的程序,输入数据是一个有符号的8位二进制数 -
道爽糖尿: input [7:0] a; output [7:0] b; int i; reg [7:0] c; always @(a) beginfor (i=0; i<8; i++) c[i] = !a[i]; end always @(c) beginb[7:0] = c[7:0] + 8'd1; end

宿迁市15938717846: 用VerilogHDL设计一个FPGA定时器! -
道爽糖尿: 首先说明:这很容易.前面说了那么多正弦波整形、PLL什么的,和HDL代码无关啊~ 这个设计无非就是个分频器.从100M的时钟得到其8,16,128分频,占空比50%,用计数器实现即可.你不会还要给你写好代码吧~没那么多时间~

宿迁市15938717846: 利用verilog HDL设计一个带同步复位、高电平有效、并且对输入时钟下降沿触发的四分频模块? -
道爽糖尿: module d(rst1,rst0,clk,in,out); input rst1,rst0,clk,in; output out; reg out; always@(posedge clk or negedge rst1 or negedge rst0) begin if(~rst1) out<=1; //注意下降沿配copy套2113的条件写法5261 else if(~rst0) out<=0; //注意下降沿配套的条件写法 ...

宿迁市15938717846: 用verilog hdl语言设计一个9人表决器,五个人通过 -
道爽糖尿: module voter9(pass,vote);output pass;input[8:0] vote;reg[3:0] sum;integer i;reg pass;always @(vote)begin sum=0;for(i=0;i<=8;i=i+1) //for 语句if(vote[i]) sum=sum+1;if(sum>4'b0100) pass=1; //若超过 4 人赞成,则 pass=1else pass=0;end endmodule

宿迁市15938717846: 用Verilog HDL语言进行简单计数器设计 -
道爽糖尿: 上楼给的是计数器啊.不是0~9计数啊.我给你改改. 1、计数器 module counter (count, clk, reset); output [4:0] count; input clk, reset; reg [4:0] count; always @ (posedge clk or posedge reset)if (reset)count <= 4'h0;elseif(count<9)count <= ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网