cntn,d触发器的应用实例?
在某系统中,前级数据输入位宽为8位,而后级的数据输出位宽为32,我们需要将8bit数据转换为32bit,由于后级的处理位宽为前级的4倍,因此后级处理的时钟频率也将下降为前级的1/4,若不使用时钟使能,则要将前级的时钟进行4分频来作后级处理的时钟。这种设计方***引入新的时钟域,处理上需要采取多时钟域处理的方式,因而在设计复杂度提高的同时系统的可靠性也将降低。为了避免以上问题,我们采用了时钟使能以减少设计复杂度。
例1:采用时钟使能
module clk_en(clk, rst_n, data_in, data_out);
input clk;
input rst_n;
input [7:0] data_in;
output [31:0] data_out;
reg [31:0] data_out;
reg [31:0] data_shift;
reg [1:0] cnt;
reg clken;
always @(posedge clk or negedge rst_n)
begin
if (!rst_n)
cnt <= 0;
else
cnt <= cnt + 1;
end
always @(posedge clk or negedge rst_n)
begin
if (!rst_n)
clken <= 0;
else if (cnt == 2'b01)
clken <= 1;
else
clken <= 0;
end
always @(posedge clk or negedge rst_n)
begin
if (!rst_n)
data_shift <= 0;
else
data_shift <= {data_shift[23:0],data_in};
end
always @(posedge clk or negedge rst_n)
begin
if (!rst_n)
data_out <= 0;
else if (clken == 1'b1)
data_out <= data_shift;
end
endmodule
碳有那几种?
有金刚石、石墨、碳纳米管、足球烯等。
碳单质,除骨炭含碳在10%左右以外,其余主要成分都是单质碳。
纯净的、单质状态的碳有金刚石、石墨和C60(又称富勒烯或足球烯),此外,还有C36、C70、C84、C240、C540、碳纳米管等。
它们是碳的同素异形体。而作为混合物的碳单质无定形碳,有木炭、焦炭、活性炭、炭黑、骨炭和糖炭等。除骨炭含碳在10%左右以外,其余主要成分都是单质碳。
由于碳原子形成的键都比较稳定,有机化合物中碳的个数、排列以及取代基的种类、位置都具有高度的随意性,因此造成了有机物数量极其繁多这一现象,现代人类发现的化合物中有机物占绝大多数。
由于金刚石晶体中碳碳键很强,所有价电子都参与了共价键的形成。晶体中没有自由移动电子,所以金刚石不仅硬度大,熔点高,而且不导电。
常温下,金刚石对所有的化学试剂都显惰性,但在空气中加热到1100K左右时能燃烧成二氧化碳。
而石墨烯各个碳原子间的连接非常柔韧,当施加外部机械力时,碳原子面就弯曲变形。碳原子就不需要重新排列来适应外力,这也就保证了石墨烯结构的稳定,使得石墨烯比金刚石还坚硬,同时可以像拉橡胶一样进行拉伸。这种稳定的晶格结构还使石墨烯具有优秀的导电性。
石墨烯中的电子在轨道中移动时,不会因晶格缺陷或引入外来原子而发生散射。由于其原子间作用力非常强,在常温下,即使周围碳原子发生挤撞,石墨烯中的电子受到的干扰也非常小。
cnt除湿和压缩机除湿的区别?
cnt除湿和压缩机除湿两者不同的是,cnt除湿可以感知空气中的湿度,当湿度下降到一定程度时,除湿机停止工作,保持空气中的湿度维持在一定水平。
而压缩机除湿,是当气温下降到一定程度时,停止工作,此时可能室温会非常低。简单的说,两者都是除湿,但两者的工作标准不一样,cnt除湿以湿度作为标准,压缩机除湿以温度作为标准。
计算1到N中数字1出现的个数?
算法分析:
1. 定义N 及用来统计的cnt, 用来循环的n;
2. 输入N ;
3. 将n从1到N循环, 对于每个n执行如下操作:a) 循环取出n的每位数字值b)判断该位是否为1, 如是则累加到cnt上。
4. 输出结果。 代码如下:
c语言变量的命题规范?
在定义变量时,变量名可以是字母、数字和下划线的组合。但是也不是随便的组合,要注意以下几个命名规则:
1) 变量名的开头必须是字母或下划线,不能是数字。实际编程中最常用的是以字母开头,而以下划线开头的变量名是系统专用的。
随便打开一个头文件就会看到,它里面所有的变量名、宏名、函数名全是以下划线开始的。
打开 VC++ 6.0 或者 VS 2010 等,然后在里面随便写一个头文件名,比如 stdio.h,然后选中它,右击,在弹出的快捷菜单中单击Open Document"stdio.h"就打开stdio.h这个头文件了。这时需要注意的是,打开后千万不要改动里面的内容,看看就行了。
所以为了避免与系统定义的名字产生冲突,在编程的时候,除非要求这么定义,否则永远都不要使用下划线作为一个变量名的开头。
2) 变量名中的字母是区分大小写的。比如 a 和 A 是不同的变量名,num 和 Num 也是不同的变量名。
3) 变量名绝对不可以是C语言关键字,这一点一定要记住!
4) 变量名中不能有空格。这个可以这样理解:因为上面我们说过,变量名是字母、数字、下划线的组合,没有空格这一项。
命名规范
以上变量命名规则是C语言语法规定的,必须遵守,不遵守就是错的。除此以外,在实际开发中程序员还形成了一种变量命名“习惯”,或者说是约定成俗的变量命名规范,它们虽然不受语法的约束,但是遵守这些“事实标准”会让代码更加专业,更加高大上。
1) 禁止取单个字母作为变量名(如 a、b、c、d、i、j、k、m、n……)。在前面的讲解中之所以用单个字母,只是为了方便讲解,以免喧宾夺主。刚开始学的时候也可以用,但是不要永远就只会用单个字母。
那为什么不要定义成单个字母呢?原因很简单——没有含义!你定义变量 a,其他人怎么知道这个 a 是什么意思?就算有注释,但难免会忘记。
所以在定义变量的时候,变量名更好要有明确的含义,这样可以提高代码的可读性。不管是自己写程序,还是别人读你的程序,都会很舒服。
在实际编程中经常用英文单词或英文单词的缩写来作为变量名,而且缩写也有一定要规则:
通常较短的单词可通过去掉“元音”形成缩写,比如表示“个数”的 count 可以缩写成 cnt;
较长的单词可取单词中的几个字母形成缩写;
对于一些单词还有大家公认的缩写,比如:
temp 可缩写为 tmp; //temp是“临时”的意思
flag 可缩写为 ***; //flag是“标志位”的意思
statistic 可缩写为 stat; //statistic是“统计”的意思
increment 可缩写为 inc;
message 可缩写为 msg;
如果变量名由多个单词组成而且不用缩写,那么每个单词的首字母全部都要用大写,必要时可用下划线分隔。
2) 但并不是说就绝对不可以用单个字母,有些变量它本身就是没有含义,我们也不能硬生生给它赋予含义,这时候就可以用单个字母。比如后面学习循环语句的时候,里面有一个循环变量,它就是定义成 i、j、k,这已经是公认的了。
但大多数情况下,在编程的时候变量都是有含义的,这时候就应该用英文单词或英文单词的缩写作为它的名字。