技术标签: verilog
`timescale 1ns/1ns
module function_mod(
input clk,
input rst_n,
input [3:0]a,
input [3:0]b,
output [3:0]c,
output [3:0]d
);
function [3:0] data_rev; // 函数名和返回变量名相同 data_rev
input [3:0] din; // 声明输入端口
begin
data_rev[0] = din[3];
data_rev[1] = din[2];
data_rev[2] = din[1];
data_rev[3] = din[0];
end
endfunction
assign c = data_rev(a); // 调用函数
assign d = data_rev(b);
endmodule
`timescale 1ns/1ns
module decoder_38(
input E1_n ,
input E2_n ,
input E3 ,
input A0 ,
input A1 ,
input A2 ,
output wire Y0_n ,
output wire Y1_n ,
output wire Y2_n ,
output wire Y3_n ,
output wire Y4_n ,
output wire Y5_n ,
output wire Y6_n ,
output wire Y7_n
);
wire E;
assign E = E3 & ~E1_n & ~E2_n; // 1&0&0 = 0
assign Y0_n = ~(E & ~A2 & ~A1 & ~A0); //000
assign Y1_n = ~(E & ~A2 & ~A1 & A0); //001
assign Y2_n = ~(E & ~A2 & A1 & ~A0);
assign Y3_n = ~(E & ~A2 & A1 & A0);
assign Y4_n = ~(E & A2 & ~A1 & ~A0);
assign Y5_n = ~(E & A2 & ~A1 & A0);
assign Y6_n = ~(E & A2 & A1 & ~A0);
assign Y7_n = ~(E & A2 & A1 & A0);
endmodule
module Decoder38(data_in,data_out,enable);
input [2:0] data_in;
input enable;
output [7:0] data_out;
reg [7:0] data_out;
always @(data_in)
begin
if (enable == 1)
case(data_in)
3'b000: data_out = 8'b00000001;
3'b001: data_out = 8'b00000010;
3'b010: data_out = 8'b00000100;
3'b011: data_out = 8'b00001000;
3'b100: data_out = 8'b00010000;
3'b101: data_out = 8'b00100000;
3'b110: data_out = 8'b01000000;
3'b111: data_out = 8'b10000000;
default: data_out = 8'bxxxxxxxx;
endcase
else
data_out = 8'b11111111;
end
endmodule
`timescale 1ns/1ns
module edge_detect(
input clk,
input rst_n,
input a,
output reg rise,
output reg down
);
reg d;
always @(posedge clk or negedge rst_n)
if (!rst_n)
d <= 1'b0;
else
d <= a;
[email protected](posedge clk or negedge rst_n)begin
if(~rst_n)begin
rise<=1'b0; down<=1'b0;
end
else if(a==1 && d==0) begin
rise <=1'b1;
down <=1'b0;
end
else if(a==0 && d==1) begin
rise <=1'b0;
down <=1'b1;
end
else begin
rise<=1'b0;
down<=1'b0;
end
end
endmodule
`timescale 1ns/1ns
module rom(
input clk,
input rst_n,
input [7:0]addr,
output [3:0]data
);
reg[3:0] rom_data[7:0]; // 8个rom_data寄存器,每个4bit
always @(posedge clk or negedge rst_n)begin
if(~rst_n)begin // 初始化
rom_data[0] <= 4'd0;
rom_data[1] <= 4'd2;
rom_data[2] <= 4'd4;
rom_data[3] <= 4'd6;
rom_data[4] <= 4'd8;
rom_data[5] <= 4'd10;
rom_data[6] <= 4'd12;
rom_data[7] <= 4'd14;
end
else begin // 每个时钟周期维持数据
rom_data[0] <= rom_data[0];
rom_data[1] <= rom_data[1];
rom_data[2] <= rom_data[2];
rom_data[3] <= rom_data[3];
rom_data[4] <= rom_data[4];
rom_data[5] <= rom_data[5];
rom_data[6] <= rom_data[6];
rom_data[7] <= rom_data[7];
end
end
assign data = rom_data[addr]; // 按地址输出
endmodule
module gray_counter(
input clk,
input rst_n,
output reg [3:0] gray_out
);
//格雷码转二进制
wire [3:0] gray_wire; // 格雷码 wire进 一根线送进
reg [3:0] bin_out; // 二进制 reg出
always @(posedge clk or negedge rst_n)begin
if(~rst_n) begin
bin_out <= 4'b0;
end
else begin
bin_out[3] = gray_wire[3];
bin_out[2] = gray_wire[2]^bin_out[3];
bin_out[1] = gray_wire[1]^bin_out[2];
bin_out[0] = gray_wire[0]^bin_out[1];
end
end
//二进制加一
reg [3:0] bin_add_wire; // 二进制+1结果 reg出
always @(posedge clk or negedge rst_n)begin
if(~rst_n) begin
bin_add_wire <= 4'b0;
end
else begin
bin_add_wire <= bin_out + 1'b1; // bin_out:格雷码转二进制结果
end
end
//二进制转格雷码
assign gray_wire = (bin_add_wire >> 1) ^ bin_add_wire; // 同一根线送出
// 时钟上升沿到来,送进输出
always @(posedge clk or negedge rst_n)begin
if(~rst_n) begin
gray_out <= 4'b0;
end
else begin
gray_out <= gray_wire;
end
end
endmodule
从零开始学架构5 - 实战篇38 | 架构师应该如何判断技术演进的方向?潮流派? 保守派? 跟风派?技术演进的动力1)对于产品类业务,答案看起来很明显:技术创新推动业务发展!苹果开发智能手机,将诺基亚推下王座,自己成为全球手机行业的新王者。 2G 时代,UC 浏览器独创的云端架构,很好地解决了上网慢的问题;智能机时代,UC 浏览器又自主研发全新的 U3 内核,兼顾...
我们再开单片机会用到很多软件比如KEIL、VS Code IAR软件等,下面我们将介绍IAR软件的安装。一、解压压缩包之后,出现如下。右键以管理员运行身份运行。最好在安装之前断开网络,和杀毒软件。不要插usb的设备。出现如下界面,选择第一项,在这里有记第一项 xxx for xxxx, for 后面会在我们破解的时候要用的 二、点击next 并接受同意安装许可。三、修改软件软件的安装目录,电脑的其他盘即可。四、选择complete选项,点击next五、弹出
要监听服务器返回的data,所以使用协议常见大代理方法如下:#pragma mark- NSURLConnectionDataDelegate代理方法//当接收到服务器的响应(连通了服务器)时会调用-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
AI开发平台ModelArtsModelArts是面向开发者的一站式AI开发平台,为机器学习与深度学习提供海量数据预处理及半自动化标注、大规模分布式Training、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。按需/包周期付费可选,最低0.00元/小时花卉识别(使用训练管理的预置算法实现图像分类)||https://support.huaweic...
一、第一种方法查看DNS,cat /etc/resolv.conf能够查看DNS,这个文件是链接到ll /etc/resolv.conf# /etc/resolv.conf -> /run/resolvconf/resolv.conf可见这个文件时链接到另一个文件的真实的原文件时:sudo vi /etc/resolvconf/resolv.conf....
❉ html+css+javaScript实现炫酷烟花表白 (云雾状粒子文字3D动画自动切换,支持自定义文字动画切换特效)/ 程序员表白必备一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/圣诞节/元旦节跨年/程序员表白,谁说我们程序猿不浪漫,马上要到520情人节了。当你在为女朋友买什么礼物犯愁的时候,不妨花...
第四章 串、数组和广义表练习题 本章考点较少易于掌握,对于串的重点考点为串的模式匹配算法;数组的主要考点为数组下标与存储地址计算和特殊矩阵的压缩存储方法;针对广义表的考点主要为在广义表中取原子项(表)的操作、求表的长度和深度。同时,应注意相关概念的区分。一、选择题 1. 串的长度是指( )。 A.串中所含不同字母的个数 B.串中所含字符的个数 C.串中所含不同字符的个数 D.串中所含非空格字符的个数 【答案...
第一次查询主键真的不会,翻书也没有找到相关的语句,百度了好多资料才查到SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='表名';//查询哪个表只需要改表名就可以了,其它的复制粘贴转载于:https://www.cnblogs.com/caijiamin...
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equ...
为什么80%的码农都做不了架构师?>>> ...
html响应式网页设计:自动适应屏幕宽度背景移动设备正超过桌面设备,成为访问互联网的最常见终端。于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页?手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。...
实现 Trie (前缀树)struct Node { bool isWord = false; Node* child[26] = {};};class Trie { public: Node* root; /** Initialize your data structure here. */ Trie() { root = new Node(); } /**...